Git跨存储库文件夹的最佳实践(TortoiseGit)

时间:2015-07-21 11:34:02

标签: git tortoisegit

我很确定之前已经回答了这个问题,但我找不到一个好的。什么是将存储库(应该是最新的)集成到另一个存储库的最佳方法?此存储库应存在于其他一些存储库中。我读过关于

的文章
  • 子树
  • 子模块

我尝试了子模块,但对于像我这样的git新手来说,接缝非常复杂。在我的想法中,当我拉动存储库时,子仓库也应该更新自己。还有另一种我错过的简单方法吗?

示例:存储库 Source_Global 应位于存储库 MyFramework 以及 MyGameEngine 中。

我在Windows上使用TortoiseGit。

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题,发现子树可能是Git中最好的解决方案。但是,目前TortoiseGit中没有子树支持,因此您需要使用命令行来使用该功能。

另请注意,子模块和子树都不允许将一个存储库的部分导入另一个存储库(这对我很重要)。

我的解决方案(可能对您没有帮助)是使用Subversion(和TortoiseSVN),直到为Windows更好地集成和记录子树支持。

答案 1 :(得分:0)

距离上次回答已经过去了几年,所以我认为值得重新讨论这个问题。

子模块

这似乎是处理您情况的最广泛的方法(至少根据Google Trends而言)。但是网上有很多关于如何使用它的抱怨。发挥作用:

  • 您必须小心保持子模块状态整洁,并避免进行损坏的提交
  • 带有子模块的仓库很难克隆
  • 在父存储库中看不到子模块的提交历史记录

子树

我认为子树的Git实现比子模块更加用户友好。子树不受上面列出的三个问题的影响。但是TortoiseGit still不支持创建,拉出或推送子树。 (不过,您可以 查看并提交给他们。)您可以尝试使用Atlassian Sourcetree作为替代方案,但这有其自身的缺点。

我认为子树是子模块的有才而又被忽略的兄弟。