2015-06-13 115 views
3

我想放棄當前分支的變化,並且沒有提交,我不小心輸入了命令git revert HEAD。 prev分支(先前提交)中的更改似乎丟失了?如何撤消「git revert head」?

如何撤銷git revert HEAD命令?

+0

可能的重複[如何「解除」恢復的Git提交?](http://stackoverflow.com/questions/8728093/how-do-i-un-revert-a-reverted-git-提交) –

回答

6

你可以做

git reset --hard HEAD~1 

它會帶你到當前HEAD之前提交。

2

如果您在恢復提交後沒有執行git push,那麼Bidhan的答案是現貨。不過,如果您從開始推出,則只需再次執行git revert HEAD即可恢復回覆。

1

git revert只是創建一個新的提交。如果你還沒有推開它,你可以「撤銷」,它使用--keep

git reset --keep HEAD~1 

--keep將重置HEAD到以前的承諾,並保留未提交的局部變化。

git reset --hard HEAD~1 

--hard如果使用它,則會丟棄工作目錄中的所有本地更改。

另一種方式是再次使用git revert。由於命令git revert只是創建新的commit撤銷另一個,你可以再次運行此命令:

git revert HEAD

它會撤消以前的還原並添加另一個提交的,儘管提交信息變得混亂。

+1

'git revert HEAD'保存了我10天的離線工作。謝謝一堆! – Samuel

0

git reset --keep是這樣做的最直接的方式,但我傾向於做很多git rebase -i

當交互操作彈出編輯器並且提交列表不在默認情況下跟蹤的遠程分支時,刪除最後一行,該行應該是回覆對應的行。

您還可以壓縮或重新排序行,或者停止並編輯較舊的提交。