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

Git best practice for a cross-repository folder (TortoiseGit)

我很确定以前有人回答过这个问题,但我找不到适合我的。在另一个应该是最新的存储库中集成存储库的最佳方法是什么?这个存储库应该存在于其他几个存储库中。我读过

我尝试了子模块,但对于像我这样的 git 新手来说,它的接缝非常复杂。在我看来,当我拉取存储库时,子存储库也应该自行更新。还有其他我错过的简单方法吗?

示例:存储库 Source_Global 应该位于存储库 MyFramework 以及 MyGameEngine.

我正在 Windows 上使用 TortoiseGit。

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

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

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

距离上次回答已经有几年了,所以我认为这个问题值得重新审视。

子模块

这似乎是处理您的情况最普遍的方式(至少根据 Google Trends)。但是网上有很多关于它如何难以使用的抱怨。即:

  • 您必须小心保持子模块状态干净并避免进行损坏的提交
  • 带有子模块的 repo 很难克隆
  • 您无法在父仓库中看到子模块提交历史

子树

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

我认为子树是子模块中有才华但被忽视的兄弟。