2011-05-15 132 views
18

我從代碼中刪除了代碼,這個代碼已經搞砸了。我想將我的整個項目恢復到最後一次本地提交。我將如何做到這一點?恢復到本地提交?

回答

42

這一切都恢復到您的當前提交(擺脫所有的變化,上演或以其他方式:

git reset HEAD --hard 

這將重置所有的以前承諾(也擺脫所有的變化,分級或以其他方式)

git reset HEAD^ --hard 

旁邊HEAD ^意味着一個 HEAD之前提交,HEAD是其中喲你現在是。您可以使用^^進行兩次提交,或者使用^^^進行三次提交。此外,您可以使用代字號來指定提交次數:〜3次提交三次提交。

git reset HEAD~3 --hard 

另請注意,--hard選項意味着這些命令將丟棄您沒有存儲的任何更改。

+3

總是很高興看到適當的安全警告附加到建議使用'git reset --hard',因爲在這個答案 - 一個令人擔憂的數字stackoverflow答案不... – 2011-05-15 12:16:34

+0

巨大的警告「如果你'已經做了一次拉,因爲你的本地提交這將核彈你的本地提交':)看到這個撤消說球疼http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html – 2015-11-17 16:11:40

+0

@ EdBishop關於Git的好消息是你幾乎從未真的失去過任何東西 – 2016-02-23 02:53:11

10

找到您最近的本地提交git log並運行git reset --hard <commit sha1>

它會刪除所有未提交的本地更改,並且會將HEAD移動到此提交。

2

git pull可以獲取併合並多個提交。要回到以前的本地狀態(而不是後面的n-commits),可以使用refloggit reset --hard @{1}

+0

非常感謝!保存了很多工作! – AbsoluteSith 2017-04-19 16:44:19