我有一个本地包依赖关系及其自己的 git 存储库,并且我有一个依赖于该目录的项目。同步项目存储库及其本地包存储库的最佳方法是什么?
一种选择是将包 merge 为子项目,如下所述:
How to Migrate Git Projects to Be One Project with Subprojects
但是,如果我对包依赖项进行更改,则需要将其 merge 回去。此外,最终会维护该包的两个镜像版本。这是这种情况下的最佳实践还是有更好的解决方案?
或者,我可以有一个到包的符号链接(symbolic link),但我不确定当项目具有符号链接(symbolic link)的 git 子存储库时最佳实践是什么。
最佳答案
对于源依赖项,您可以选择:
-
git submodule add -b master -- /url/of/dependency.git
git subtree (如 illustrated here ,请参阅 this tutorial )
git subtree add --prefix=subdir --squash /usr/of/dependency.git master
两者都允许在子存储库中进行演变,但除非您进行不断更改,否则我更喜欢子模块:它允许引用另一个存储库的固定 SHA1。
查看更多信息“Differences between git submodule and subtree”。
子存储库被引用为 gitlink ,一个special entry in the index of the parent repo 。 您仍然可以在该子存储库中进行提交,只要您提交并推送它们,然后向上 gack 一级到父存储库,添加并提交新的 SHA1 (gitlink),然后也将其推送。
您可以reference a submodule in order to follow a branch (即-b master
部分)
引用同一子模块的任何其他项目都需要执行以下操作:
git submodule update --remote
他们将从该分支获取最新版本(并且需要添加并提交从子模块获取中生成的新 SHA1)
关于git - 使用自己的 git 存储库来表示 git 项目对本地包的依赖关系的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38706544/