2016-03-09 97 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