猿问
下载APP

git子模块和子树之间的区别

使用git子模块和子树之间在概念上有什么区别?

每种情况的典型场景是什么?


冉冉说
浏览 65回答 3
3回答

茅侃侃

子模块更适合基于组件的开发,因为您的主项目依赖于另一个组件(仓库)的固定版本。您只能在父存储库中保留引用(gitlinks,索引中的特殊条目)如果我希望链接始终指向外部仓库的HEAD怎么办?您可以使一个子模块跟随子模块远程仓库的分支的HEAD,方法是:Ø git submodule add -b <branch> <repository> [<path>]。(以指定要遵循的分支)o 默认情况下git submodule update --remote,它将把子模块的内容从更新为最新的HEAD 。即使使用主项目,您的主项目仍将跟踪子模块HEAD的哈希值。<repository>/<branch>origin/master--remote子树更像是一个基于系统的开发,其中您的所有存储库一次包含所有内容,您可以修改任何部分。

慕田峪7331174

概念上的区别是:使用git子模块,您通常希望将大型存储库分成较小的存储库。引用子模块的方式是maven样式&nbsp;-您引用的是来自其他(子模块)存储库的单个提交。如果需要在子模块中进行更改,则必须在子模块中进行提交/推送,然后在主存储库中引用新的提交,然后提交/推送主存储库中已更改的引用。这样,您必须有权访问两个存储库才能完整构建。使用git子树,您可以将另一个存储库集成到其中,包括其历史记录。因此,在集成之后,您的存储库的大小可能会更大(因此,这不是保持存储库较小的策略)。集成之后,就没有与其他存储库的连接,除非您想要获取更新,否则您无需访问它。因此,此策略更多用于代码和历史记录重用-我个人不使用它。

慕盖茨1488219

子模块将主存储库推送到远程不会推送子模块的文件子树将主存储库推送到远程,从而推送子树的文件
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答