我正在做很長的提交git rebase
。我不小心--skipped
一個承諾,我遇到了一些衝突。我應該完成git rebase --continue
。撤銷git rebase --skip - 在rebase期間重新應用提交
有沒有辦法在這個重組階段期間重新應用此先前的提交,然後繼續進行rebase?我看到
一種方法是
- 創建的最後一個分支提交停在這一點上,底墊這是正確應用
- 重啓底墊開始與先前跳過的提交。
或者我可以做一個櫻桃選擇,而處於rebase階段?
我正在做很長的提交git rebase
。我不小心--skipped
一個承諾,我遇到了一些衝突。我應該完成git rebase --continue
。撤銷git rebase --skip - 在rebase期間重新應用提交
有沒有辦法在這個重組階段期間重新應用此先前的提交,然後繼續進行rebase?我看到
一種方法是
或者我可以做一個櫻桃選擇,而處於rebase階段?
我找到了一種方法,其「爲我工作」:
在衍合很多事情在.git/rebase-apply
-path正在發生。其中有一個文件叫next
。 next
包含的數字對應於駐留.git/rebase-apply-path的文件。該文件包含有關當前正在處理的提交的信息。例如:
$ cat .git/rebase-apply/next
0260
$ less .git/rebase-apply/0260
<info about the commit which is currently processed (and has conflicts)
Git似乎保留了與上述文件一樣被忽略的提交。而與已經應用的提交相對應的文件不再存在。我意外跳過的提交被稱爲0259,該文件仍然存在。
這裏是我做過什麼:
$ echo "0258" > .git/rebase-apply/next
有了,我說,目前第二百五十八提交處理混帳(這之前的正確應用)。然後我做了
$ git rebase --skip
通知Git忘記這一個,瞧,我可以再次跳過的工作承諾,糾正衝突和--continue
。它工作。
Git非常棒,因爲它可以保存基本上所有提交的日誌。
找到你的承諾在 「的.git /日誌/ HEAD」,打開一個文本編輯器
發現在頭文件的SHA
3c8c ...... 2260dc ...全名{[email protected]} 1471276956 -0600提交:保存試用版1,2,3
類型(注類型足夠的沙這樣混帳知道拉哪一個):
git的結帳-b恢復2260d ...
見鏈接以供參考:http://blog.screensteps.com/recovering-from-a-disastrous-git-rebase-mistake
您節省了2天的工作時間! –
這在最近版本的Git改變了一點,但我仍然能夠使其通過調整這些文件的工作:'混帳底墊,todo'和按照上面的想法「上」。 – goncalossilva
使用git版本'1.9.4.msysgit.1'我可以通過Patrick B.的方法獲得成功,我既沒有使用'git-rebase-todo'也沒有''到''。 – codingdave
恐怕在git rebase --skip之後,這是不可能的。至少對於我來說。我的「.git」文件夾中沒有「rebase-apply」 – riroo