2011-03-17 118 views
30

當我做混帳通過TortoiseGit恢復,我得到這個可愛的窗口:如何從命令行進行混排?

enter image description here

然而,當我想在命令行中做的一樣,the documentation設法完全搞不清我。我如何恢復所有本地未修改的更改?

+0

只是一個詞彙筆記:'revert'是創建一個新的提交這恢復了以前的提交,「重置」是你想要的(恢復未被改變的更改) – CharlesB 2011-03-17 13:23:24

+2

@CharlesB:我知道他們一直認爲這是TortoiseSVN的保留,但是男人,這似乎是一種不負責任的命名。 – Cascabel 2011-03-17 14:49:11

回答

65

要放棄所有本地更改,請不要使用還原。還原用於恢復提交。相反,這樣做:

 
$ git reset --hard 

當然,如果你像我一樣,7微秒您輸入命令後,你會記得你希望你沒有剛刪除的東西,所以你可能反而更喜歡使用:

 
$ git stash save 'Some changes' 

它丟棄工作目錄中的更改,但使其可檢索。

+0

請注意,這會丟棄*所有*本地更改,因此它不能完全替代帶有複選框的對話框。如果你只想扔掉一些變化,使用'git checkout ...',因爲[Marc建議在下面](http://stackoverflow.com/questions/5339518/how-do-i-git-revert-from-命令行/ 5339716#5339716) – Cascabel 2011-03-17 14:50:34

17

假設你有沒有犯的是,你還可以:

git checkout filename(s) 
+1

但仍然會顯示文件在git狀態內的文件上演提交。 – 2013-07-29 15:13:29

+2

這應該只會發生,如果你以前「git添加」它。如果你只是編輯一個文件然後檢查出來,它回到原來的。 – 2013-07-30 15:59:01

2

Git的新手和我一樣應該意識到working directory' != pwd

它意味着整棵樹。

所以我很感激威廉姆斯建議使用:

$ git stash save 'Some changes' 

可以通過以下撤銷:

$ git stash pop