Git子模块的替代品?

Cha*_*ang 76 git-submodules git-subtree git-slave git-repo git-subrepo

我觉得使用Git子模块对于我的开发工作流程来说有点麻烦.我听说过Git子树和Gitslave.

  • 是否有更多工具用于多个存储库项目以及它们如何比较?
  • 这些工具可以在Windows上运行吗?

Set*_*son 98

哪种方式最适合您,取决于您的需求,愿望和工作流程.它们在某种意义上是半同构的,只是有些比其他任务更容易用于特定任务.

  • 当您在超级项目的同时控制和开发子项目时,gitslave非常有用,而且当您通常希望同时标记,分支,推送,拉取等所有存储库时.gitslave从未在我知道的窗户上进行过测试.它需要perl.

  • 当您不控制子项目或更具体地希望将子项目修复到特定修订时,即使子项目发生更改,git-submodule也会更好.git-submodule是git的标准部分,因此可以在windows上运行.

  • git-subtree为git的内置子树合并策略提供了一个前端.如果您希望拥有单一存储库"统一"git历史记录,那就更好了.与子树合并策略不同,将更改导出到不同的(目录)树更容易返回到原始项目,但它不像gitslave甚至git-submodule那样自动化.

  • repo在理论上类似于gitslave,但对于我发现的非android操作没有详细记录.它非常专注于Google Android开发模型,并且本身仅支持少量git命令(尽管您可以运行任意命令),并且有限的本机支持不支持,例如,集中式存储库可以推送和检出分支似乎相当困难.

  • 如果您使用多个版本控制系统,kitenet的先生就是您想要使用的,但由于其最小的公分母方法,因此仅限于仅限git的超级项目.有一些方法可以运行任意命令,但它们没有很好地集成.

  • 请注意,此答案中的_git-subtree_指的是(如上所述)Git子树合并策略,而不是[Avery Pennarun的git-subtree](https://github.com/apenwarr/git-subtree),它们基本上不是相同.后者明确地设计为允许从子树返回贡献. (7认同)
  • @kynan:除了你的评论.我想指出的是,Avery的Pennarun的git-subtree现在可以在git 1.7.11及更高版本中使用. (4认同)
  • 很棒的故障!我很乐意看到它被修改为将"子树合并"与git-subtree区分为@kynan提及. (3认同)