git子树适合我吗?

时间:2014-06-27 12:33:37

标签: git git-submodules git-subtree

我的项目中包含第三方库。重要的是"子项目"代码应该包含在主/父代码中,因为目标是当其他人进行git pull时,他们可以在没有额外努力(或最小化)的情况下下载代码。

但我希望有可能从库自己的仓库下载更新。

以前,该库已直接下载到他的目录中,并且更新是通过主项目中的提交来管理的。

现在我正在考虑使用git-subtree或git-submodule。 git子树是否适用于此目的。 git-submodule更好吗?

2 个答案:

答案 0 :(得分:1)

Git子树。

  • 其他人容易获得。
  • 如果您想要对库进行更改,请避免并发症。
  • 使用squash选项可避免在合并库时拉入大量历史记录。
  • 您可以使用git subtree命令合并库,并且没有其他人需要支持该命令来访问和使用您的存储库。
  • 您的存储库中无意中对库进行的更改没有问题,如果您想贡献它们,只需拆分即可。

答案 1 :(得分:0)

几乎总是,最好使用您正在使用的任何语言的包管理器来包含第三方代码,固定到特定版本。如果您没有包管理器,请将构建脚本中第三方存储库的特定提交/标记中的代码提取到git-ignored子文件夹中。

但是要具体回答你的问题,那里有很多资源来比较子树和子模块。每种方式都有利弊。我可以给你链接,但我只是从我的搜索中复制和粘贴。我建议,对于代码而言,您不是直接更改项目的一部分,子模块很好,因为您可能不希望项目中的库代码的历史记录。