git子树适合我吗?

git子树适合我吗?,git,git-submodules,git-subtree,Git,Git Submodules,Git Subtree,我的项目中包含了一个第三方库。“子项目”代码应该包含在主/父项目中,这一点很重要,因为目标是当其他人使用git pull时,他们可以不费任何额外的努力(或最少)下载代码 但我希望有可能从图书馆自己的repo下载更新 以前,该库直接下载到他的目录中,更新由主项目中的提交进行管理 现在我考虑使用git子树或git子模块。Is git子树在这方面很有用。git子模块更好吗?几乎总是,最好使用任何语言的包管理器来包含固定到特定版本的第三方代码。如果您没有包管理器,请将构建脚本中第三方repo的特定提交/

我的项目中包含了一个第三方库。“子项目”代码应该包含在主/父项目中,这一点很重要,因为目标是当其他人使用git pull时,他们可以不费任何额外的努力(或最少)下载代码

但我希望有可能从图书馆自己的repo下载更新

以前,该库直接下载到他的目录中,更新由主项目中的提交进行管理


现在我考虑使用git子树或git子模块。Is git子树在这方面很有用。git子模块更好吗?

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

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

Git子树

  • 别人容易得到
  • 如果确实要对库进行更改,则可以避免复杂性
  • 合并库时,使用“挤压”选项可避免拉入大量历史记录
  • 您可以使用git subtree命令合并库,其他人无需支持该命令即可访问和使用您的存储库
  • 不经意间在存储库中对库所做的更改没有问题,如果您想贡献这些更改,只需将其拆分即可

谢谢,但就我而言,我不会对库进行更改。只能从他自己的回购协议中得到更新。那么,为什么要限制自己呢?