git - 使用自己的 git 存储库来表示 git 项目对本地包的依赖关系的最佳实践是什么?

标签 git subproject

我有一个本地包依赖关系及其自己的 git 存储库,并且我有一个依赖于该目录的项目。同步项目存储库及其本地包存储库的最佳方法是什么?

一种选择是将包 merge 为子项目,如下所述:

How to Migrate Git Projects to Be One Project with Subprojects

但是,如果我对包依赖项进行更改,则需要将其 merge 回去。此外,最终会维护该包的两个镜像版本。这是这种情况下的最佳实践还是有更好的解决方案?

或者,我可以有一个到包的符号链接(symbolic link),但我不确定当项目具有符号链接(symbolic link)的 git 子存储库时最佳实践是什么。

最佳答案

对于源依赖项,您可以选择:

两者都允许在子存储库中进行演变,但除非您进行不断更改,否则我更喜欢子模块:它允许引用另一个存储库的固定 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/

相关文章:

git - heroku rollback 没有更新 HEAD 远程分支,是吗?

git repo 说它在 pull 之后是最新的但是文件没有更新

java - 遗留项目结构 : intellij recognizes gradle subproject as module but doesn't recognize its source code

ios - 如何从子项目中包含一个类

spring - Gradle 多模块项目 : Apply module dependency to all subprojects except for itself

git - 将 CVS 存储库导入 GIT 会导致一些与时间戳相关的误导行为

asp.net-mvc - 在 github 中避免 ASP.NET 密码?

ios - Xcode 子项目框架依赖构建失败

git - 重写历史 git filter-branch create/split into submodules/subprojects

Git: "Error: refusing to create funny ref ' HEAD' remotely"用于初始推送