查看git-rebase
手册页,我没有看到任何看起来像我想要的图表(除了一些看起来与我想要的相反),并且在玩--onto
没有得到我想要的东西。
让我看看我是否可以绘制类似git-rebase
手册页中的图表(左侧的垂直条使Markdown格式正确):
| o-o-o-o-branch2
| /
| -o-o-A-master-o-branch1-o-o-my_WIP_branch
branch1
在这里可能并不重要,但无论如何我都把它包括在内。我想要做的是(省略'
手册页图中通常附带的git-rebase
:
| o-o-o-o-branch2-o-branch1-o-o-my_WIP_branch
| /
|-o-o-A-master
基本上,我希望将my_WIP_branch
工作放在branch2
工作上,而不必处理标记为A
的提交组中涉及的合并冲突。有没有办法做到这一点,除了手动挑选每个提交branch2
(或者至少是否有一个简单的方法来做到这一点?)?顺便说一句,会有合并冲突,所以理想情况下它应该是一个git命令或git命令组,可以优雅地处理它们(例如,git rebase
优雅地处理它们,git am
和git apply
不要)。
答案 0 :(得分:4)
奇怪......因为这应该是rebase --onto
的经典案例。
你有:
o-o-o-o <--branch2
/
o-o-o-A <--master
\
-o-o <--branch1
\
-o-o <--my_WIP_branch
你想:
-o-o <--my_WIP_branch
/
-o-o <--branch1
/
o-o-o-o <--branch2
/
o-o-o-A <--master
应该是:
$ git rebase --onto branch2 master my_WIP_branch
它将重播任何不在master上的提交,但是从你可以到达my_WIP_branch的地方(意味着来自branch2的提交不符合条件)。
请参阅我的other SO answer for merge conflict instructions和Git手册的"resolving merge conflicts" section。 (你可以accept all merges with your version, for instance)