我有一个本地包依赖项,它有自己的git存储库,并且我的项目依赖于该目录。同步项目存储库及其本地包存储库的最佳方式是什么?
一种选择是将包合并为子项目,如下所述:
如何将Git项目迁移为具有子项目的一个项目
然而,如果我对包依赖项进行更改,我需要将其合并回。此外,最终会维护包的两个镜像版本。这是这种情况下的最佳实践,还是有更好的解决方案?
或者,我可以有一个到包的符号链接,但我不确定当一个项目有一个符号链接的git子回购时,最佳做法是什么。
对于源依赖项,您可以在以下两者之间进行选择:
-
git子模块
git submodule add -b master -- /url/of/dependency.git
-
git子树(如图所示,请参阅本教程)
git subtree add --prefix=subdir --squash /usr/of/dependency.git master
两者都允许在子repo中进行进化,但除非您进行常量更改,否则我更喜欢子模块:它允许引用另一个repo的固定SHA1
请参阅"git子模块和子树之间的差异"。
子回购被引用为gitlink,这是父回购索引中的一个特殊条目。只要你提交并推送它们,你仍然可以在该子repo中进行提交,然后向上gack一级到父repo,添加并提交新的SHA1(gitlink),并推送它。
您可以引用子模块以遵循分支(即-b master
部分)
引用相同子模块的任何其他项目都需要做:
git submodule update --remote
他们将从该分支获取最新的(并且需要添加并提交子模块获取的新SHA1)