2017-03-07 146 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