【发布时间】:2011-06-21 23:58:27
【问题描述】:
我在将开发分支的子树合并回集成分支时遇到问题。
我有两个分支,一个用于开发,一个用于集成。在开发分支中进行了广泛的开发,我想将其中的一部分合并回来。我要合并的特定部分都包含在开发分支的一个子树中。
我的目录结构是这样的:
[Branch A] [Branch B]
| |
+--Dir1 +--Dir1
+--Dir2 +--Dir2
| | |
+--DirA | +--DirA
| | |
+--File1 | +--File1
+--File2 | +--File2
| +--File3
| +--File4
+--Dir3
我想将 Branch B/Dir2/DirA 合并到 Branch A/Dir2/DirA。我希望合并 File1 和 File2,并且应该在分支 A 中创建 File3 和 File4。我不想选择 Dir3 或 Dir1 中的任何更改。
我已经尝试了 kernel.org 为 merging subtrees 概述的步骤,但是当我使用以下命令执行 git read-tree 时它们失败了:
error: Entry 'Dir1/DirA/File1' overlaps with 'Dir1/DirA/File1'. Cannot bind.
我尝试使用托管在 github 上的 subtree script,但我运气不佳。当我这样做时:
git checkout Branch_A
git subtree merge -P Dir2/DirA Branch_B
我看到 Dir3 已合并的证据,但合并失败并出现冲突。
我可以挑选要合并的文件,但这对于本应是常见且直截了当的问题来说似乎是不必要的复杂化。
【问题讨论】:
-
你想要子树的历史吗?它本身有意义吗?