2016-03-09 101 views

回答

0

一个快速的方式,我能想到的是,

git checkout branch0

记下d的SHA通过git log

承诺

git checkout master

现在将branch0重命名为branch1

git branch -m branch0 branch1

A--B' master \ D branch1

现在删除BRANCH1

git branch -D branch1

再次创建一个branch0如下。 git checkout -b branch0

A--B' - master&branch0 上面的命令master和branch0是一样的。只有改变我们需要branch0要提出的是获得承诺D.

git cherry-pick D

现在branch0看起来如下

A--B' master \ D branch0

4

使用--onto参数与git底垫中,从而改变了基线git重播工作。

git checkout branch0 

在这种状态下,你仍然应该在你的git历史IIUC中看到C.

git rebase --onto B' C 

这意味着“采取一切提交在我目前的分公司自提交C(在你的情况那只是d)和play银行ontop的B'的”

您也可以使用可选的<branch>参数同时做结帐和rebase:

git rebase --onto B' C branch0 
+0

没有结帐(更短):'git rebase - 主人C branch0' – jbaptperez

+0

谢谢。我已将这一建议添加到答案中。我还重新排序了上游和上游参数,以便与您的git手册页相匹配(即使进行了简短测试的逆向作品)。 – pcrost