我建議你與rebase onto
解決方案。假設我們有以下回購:
[email protected] c:/_TEMP/FOO (AIOEC-393) $ git lga
* 8c2d5c5 - (HEAD, AIOEC-393) commit5 (Yanflea 2 minutes ago)
* 3c20e52 - commit4 (Yanflea 2 minutes ago)
* c5383af - commit3 (Yanflea 2 minutes ago)
* fb11e98 - commit2 (Yanflea 2 minutes ago)
* e019261 - (develop) commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
而且你想擁有從AIOEC-393
分公司所有提交除commit2。
讓我們進入到一個 '臨時' 分支(因此AIOEC-393
沒有被修改):
$ git checkout -b develop-target
,然後使用commit2爲支點使用rebase onto
命令:
$ git rebase --onto develop fb11e98 develop-target
讓我們來看看日誌:
[email protected] c:/_TEMP/FOO (develop-target) $ git lga
* 7bcb162 - (HEAD, develop-target) commit5 (Yanflea 2 minutes ago)
* 3c89459 - commit4 (Yanflea 2 minutes ago)
* e6ed5f7 - commit3 (Yanflea 2 minutes ago)
* e019261 - (develop) commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
現在我們只需要快進從develop
到develop-target
(然後刪除develop-target
):
$ git checkout develop
$ git rebase develop-target
$ git branch -d develop-target
日誌:
[email protected] c:/_TEMP/FOO (develop) $ git lga
* 7bcb162 - (HEAD, develop) commit5 (Yanflea 2 minutes ago)
* 3c89459 - commit4 (Yanflea 2 minutes ago)
* e6ed5f7 - commit3 (Yanflea 2 minutes ago)
* e019261 - commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
不,我只想做一個新的分支,它是「發展」 +最新的四次提交 –
是的,看看更新後的答案。應該工作 – ritter
'reset --hard'是危險的建議... – knittl