【发布时间】:2015-12-01 04:15:41
【问题描述】:
git subtree 解决了什么问题?
我应该何时以及为什么要使用该功能?
我读到它是used for repository separation。但是为什么我不只是创建两个独立的存储库,而不是将两个不相关的存储库合二为一呢?
这个 GitHub 教程解释了how to perform Git subtree merges。
我知道如何使用它,但不知道何时(用例)和为什么,以及它与@987654323的关系@。当我依赖另一个项目或库时,我会使用子模块。
【问题讨论】:
-
"repository separation" != "unrelated repositories" 认为你的 repo 中的依赖项并且你不想使用子模块(出于某种原因,也许你不喜欢它们不透明并且子模块中提交的路径与主 git repo 中的路径不匹配)。
-
@cyphar:你是说
submodule和subtree都或多或少地实现了相同的目标,即合并相关项目,唯一的区别是submodule可能有点不太透明和更新子模块是一个两步操作,subtree的缺点是提交消息会在两个项目之间全部混淆? -
嗯,在某些情况下,这并不是一个真正的缺点。例如,如果您需要将具有
subtrees 的存储库一分为二,并且在依赖项中引入了错误,您将在引入错误的subtree中找到确切的提交。使用子模块,您只会发现修改submodule的提交会导致错误,如果您想快速找到submodule中的哪个提交导致主项目中的错误,那么您就是SOL。 -
这里有一篇文章比较了git subtree和git submodule的实例nering.dev/2016/git-submodules-vs-subtrees
标签: git git-subtree