2014-02-20 206 views
1

可以說我已經提交了1,2,3,4,5。提交2和5是我的,其餘的是由別人完成的。因爲3,4提交有一些錯誤! 我推送了提交。 承諾5是我想申請在提交2.Git刪除具體提交

我要回滾提交2和應用更改我的新變化commmit 5.

我應該如何刪除特定承諾3和4孤獨?

回答

1

做一個變基:

git rebase -i HEAD~5 

這將打開一個編輯器窗口;只需刪除對應於提交3和4的pick行。退出編輯器:rebase將繼續。

注意:危險和衝突的來源;如果底墊由於某種原因失敗,或者修復它(手;看到git rebase手冊頁)或git rebase --abort終止它)

當底墊被完成後,按與-f選項。但與你在這個回購工作的人不會感謝你!

+0

我已經承諾最近的變化! – Dineshkumar

+0

然後跳過藏匿一部分;)編輯 – fge

+0

還我已經推了! – Dineshkumar

0

這裏是另一種方法,只是爲了變化。

您應做的是對的5個頂級的承諾3和4

將恢復代碼如果您還沒有推開這些提交創建新的提交,你也可以做一個摘櫻桃。說你的回購HEAD指向5點,它是分行主。

1 -> 2 -> 3 -> 4-> 5 (HEAD, master) 


git co -b temp 

1 -> 2 -> 3 -> 4 -> 5 (HEAD, master, temp) 


git co master 
git reset --hard HEAD~3 

1 -> 2 (HEAD, master)-> 3 -> 4 -> 5 (temp) 


git cherry-pick temp 

1 -> 2 -> 3 -> 4 -> 5 (temp) 
    | 
    -> 5' (HEAD, master) 


git branch -D temp 

1 -> 2 -> 5' (master, HEAD) 


我想這是你想要的。儘管你會做的更好,以創建還原上的5

注意頂部承諾:通過@fge給出的方法更簡潔,最好的,如果你以前做過一個互動變基。如果沒有,這個人會給你一個戰鬥的機會,因爲你永遠可以合併主回溫,並得到從你開始點在哪裏。