2016-06-12 24 views
0

假設我有一個已經是git repo「sub」的目錄,現在我希望它成爲我新創建的超級目錄「sup」的子樹。如何使用git subtree添加本地回購?

我搜索了文檔,但所有的教程都是關於添加一個遠程回購或從現有的提交分裂。我如何將現有的git倉庫添加到主倉庫倉庫?

使用git subtree add --prefix=sub sub會給出警告子已存在。

回答

1

有兩種方法可以做到這一點,這取決於你的期望。

  1. 將sub repo添加爲子模塊。回購保持獨立
  2. 添加子回購作爲此子回購的子樹。其歷史合併爲

對於1,您想要使用git子模塊。具體來說,

在您的SUP目錄(已用git init初始化)運行:

git的子模塊添加位置的子

將克隆子回購到SUP回購。然後,您可以刪除子回購,如果它位於其他地方。

請注意,子模塊的作用與頂級回購不同。

查看子模塊的文檔:

https://git-scm.com/book/en/v2/Git-Tools-Submodules

對於2,更令人費解的一點。

首先你獲取其他回購的提交: # add remote git remote add sub # fetch commits git fetch # create local branch with sub git checkout -b sub_branch sub/master # switch to master git checkout master # now, merge commit as a subdirectory git read-tree --prefix=sub/ -u sub_branch 您可以在將來繼續從子拉,它會被合併到SUP

--dmg

+0

「遠程Git添加子子「; 'git fetch sub'。然後必須刪除本地dir子。另外,如果git日誌是保留的,我想我應該使用'git merge -s我們的--no-commit' –

+0

閱讀許多文章讚美美德**子樹**有**子模塊**,但最終我浪費了大量時間試圖採用v1書中描述的_convul​​ated_範例。 v2書對複雜性做了一個模糊的參考,但沒有描述問題 - 將主從子樹中合併的更改推送到分支將導致分支的上游回購包含*本地存儲庫中的所有對象*,包括引用的內容由_master_。 – bvj