【问题标题】:git subtree covering multiple directories覆盖多个目录的 git 子树
【发布时间】:2014-11-08 18:19:41
【问题描述】:

我正在尝试在一个更大的项目中使用一个 git repo(“FOO”)的根目录中的 15 个目录。将在较大的项目中对这些文件进行更改,并将其拉回“FOO”存储库。从逻辑上讲,我想将这些目录git subtree split --rejoin 放到“FOO”中的一个分支中,然后将该分支添加/拉到更大的项目中。换句话说,我想在“FOO”存储库中保留 1-2 个目录私有,而不是将它们添加/同步到更大的项目。

但是,在查看 git 文档和 SO 线程时,git subtree split 似乎不支持此功能(请参阅链接线程),除非我将每个目录都设为子树我使用 @987654324 @改写历史。 Git subtree and multiple directories

通常建议将git filter-branch 作为解决方案,但这似乎会破坏任何同步回原始“FOO”存储库的操作。来自git filter-branch --help重写的历史对于所有对象都会有不同的对象名称,并且不会与原始分支收敛。目前无法对“FOO”存储库结构进行任何更改(例如通过 filter-branch 将 15 个目录置于新目录下)。

我是否坚持将每个目录都视为子树?在较大的存储库中进行 15 次子树拆分(同步回“FOO”将花费大量时间。是否有任何优化此的技巧(例如,1 通过大型存储库的提交但为每个文件夹的提交创建一个分支)?

【问题讨论】:

  • 较大项目的一次拆分需要 4 分钟。完成所有 15 个子树拆分只需不到一个小时。

标签: git


【解决方案1】:

您可能想要使用子模块。请阅读: http://git-scm.com/book/en/v2/Git-Tools-Submodules

【讨论】:

  • 如果“FOO”是一个子模块,我认为不可能阻止父 repo 看到带有私有目录内容的变更集。
猜你喜欢
  • 2014-03-04
  • 2012-10-09
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多