0
假设我有一个项目A
,它使用另一个项目B
。git - 包括其他项目
为此,在A
的git存储库中有一个子文件夹,其中B
已被克隆。
现在,该文件夹以A's
回购同步很可能是刚刚在其加入该文件夹,一切A's
指数,用它做的最简单方法。由于我没有这种嵌套的git结构的经验,我不知道这是否是一件聪明的事情。我以这种方式冒险做什么,有什么选择?
假设我有一个项目A
,它使用另一个项目B
。git - 包括其他项目
为此,在A
的git存储库中有一个子文件夹,其中B
已被克隆。
现在,该文件夹以A's
回购同步很可能是刚刚在其加入该文件夹,一切A's
指数,用它做的最简单方法。由于我没有这种嵌套的git结构的经验,我不知道这是否是一件聪明的事情。我以这种方式冒险做什么,有什么选择?
我想推荐: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
发现你有2个选项submodu les和子树合并。我会建议:子树合并,因为它更容易维护。您只需要以正常方式创建每个存储库。在您的“收集器”存储库中,您可以将另一个存储库合并到“收集器”目录的目录中。如果你想把这些命令告诉我,我会添加一个答案。 – Teocci
如果子树比子模块更容易维护,这是有争议的。根据经验,如果库“B”经常变化,它应该被用作子树。如果它处于一个相对稳定的阶段,它应该被用作子模块。关于何时使用子模块的一篇很好的文章可以在这里找到(https://medium.com/@porteneuve/mastering-git-submodules-34c65e940407#.lhi1isank),关于子树的相应文章是[here](https: //medium.com/@porteneuve/mastering-git-subtrees-943d29a798ec#.d5zzxh5kv)。 – kowsky
@Teocci确实可以随意阐述一个答案。 – User1291