合并两个分支但不实际合并

3
这似乎是一个非常普遍和直接的要求,但我已经研究了移植扩展、变基、导入、导出等等,但我还没有弄清楚。希望我没有漏掉什么显而易见的东西。
我想要"合并"两个分支(具体来说是命名分支),使得分支本身不会消失。本质上,我想从一个修订版本中拉取更改,但手动解决cherrypick更改/冲突(使用我的合并程序)。
似乎导入、导出、移植等生成的补丁和变更集直接应用于当前工作目录。但我不想要那样...相反,我想手动确定哪些更改需要进行。
感谢您的帮助。

1
你使用哪个工具?Git 还是 Mercurial? - gor
我已经为下面的Mercurial问题点赞了Wim的答案,但我想强调一下你存在的更大的概念误解。在Mercurial中,命名分支是变更集上的永久名称,它们永远不会消失。如果你执行hg update stable; hg merge development,你可能不再拥有开发分支的头部,但是执行hg update development; ...changes...; hg commit会在开发分支上创建一个新的头部,其父节点是开发分支,该分支与以前一样存在。至于只获取一些来自dev的更改:你可以使用合并工具轻松完成这个任务。 - Ry4an Brase
谢谢Ry4an,你说得对,我有误解。 - Kostolma
3个回答

4
我想要“合并”两个分支(具体来说是命名分支),使得这些分支本身不会消失。
这是默认的行为。例如,如果您查看Mercurial源代码中的default分支,您会发现它经常与stable合并。这些合并不会使defaultstable消失。合并提交只是获取本地分支名称。
我想要手动确定哪些更改会发生。
听起来像是移植已经做到了这一点。或者,您可以在自己的功能分支上进行每个更改,然后您可以完全控制哪些功能合并到分支中。
更新:现在还有一个核心嫁接命令。

2

看起来你需要一个第三个分支,一个合并分支,你可以把另外两个分支中的任何变更集合并到这个分支中。
然后你可以使用一些方法(Git 的话)来实现:

git cherry-pick SHA1 --no-commit
git add --patch

要真正微调第三个分支中需要导入/合并的内容,如SO问题“Using GIT, how can I selectively pull / merge changes from anothers 'fork'?”所述。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接