2017-03-07 140 views
0

假設我有一個項目A,它使用另一個項目Bgit - 包括其他項目

爲此,在A的git存儲庫中有一個子文件夾,其中B已被克隆。

現在,該文件夾以A's回購同步很可能是剛剛在其加入該文件夾,一切A's指數,用它做的最簡單方法。由於我沒有這種嵌套的git結構的經驗,我不知道這是否是一件聰明的事情。我以這種方式冒險做什麼,有什麼選擇?

+1

發現你有2個選項submodu les和子樹合併。我會建議:子樹合併,因爲它更容易維護。您只需要以正常方式創建每個存儲庫。在您的「收集器」存儲庫中,您可以將另一個存儲庫合併到「收集器」目錄的目錄中。如果你想把這些命令告訴我,我會添加一個答案。 – Teocci

+1

如果子樹比子模塊更容易維護,這是有爭議的。根據經驗,如果庫「B」經常變化,它應該被用作子樹。如果它處於一個相對穩定的階段,它應該被用作子模塊。關於何時使用子模塊的一篇很好的文章可以在這裏找到(https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407#.lhi1isank),關於子樹的相應文章是[here](https: //medium.com/@porteneuve/mastering-git-subtrees-943d29a798ec#.d5zzxh5kv)。 – kowsky

+0

@Teocci確實可以隨意闡述一個答案。 – User1291

回答

2

我想推薦:subtree merging,因爲當你的項目經常變化時,它更容易維護,就像@kowsky提到的那樣。

您只需要以正常方式創建每個存儲庫。在您的「收集器」存儲庫中,您可以將另一個存儲庫合併爲「收集器」目錄的子目錄。要做到這一點只需要運行這些命令:

$ git remote add -f AnotherRepo /path/to/that/repo 
$ git merge -s ours --no-commit AnotherRepo/master 
$ git read-tree --prefix=AnyDirectoryToPutItIn/ -u AnotherRepo/master 
$ git commit -m "Merge AnotherRepo project as subdirectory"` 

然後,拉AnotherRepo到您的「收集器」儲存庫(或更新),使用子樹合併策略:

$ git pull -s subtree AnotherRepo master 

這爲做到這一點的常見方式,它的工作:-)

更多關於這種方式,包括它的子模塊比較可能在這個混帳Git-Tools-Subtree-Merging