可能重複:
Git: Revert to previous commit status我如何撤消工作空間中的某些更改並返回到最後一次提交?
我試着在我的代碼中的一些變化,但我搞砸了太多的事情(當你累了,這是從來沒有後期工作)和我只想回到我的最後一次提交。我沒有做git add
或git commit
和顯然如果我做git pull
一切都是最新的。
我認爲git checkout
是我需要的,但它沒有奏效..任何幫助?
可能重複:
Git: Revert to previous commit status我如何撤消工作空間中的某些更改並返回到最後一次提交?
我試着在我的代碼中的一些變化,但我搞砸了太多的事情(當你累了,這是從來沒有後期工作)和我只想回到我的最後一次提交。我沒有做git add
或git commit
和顯然如果我做git pull
一切都是最新的。
我認爲git checkout
是我需要的,但它沒有奏效..任何幫助?
提及reset --hard
的答案會做你想做的事(以及其他一些你可能會或可能不會做的事情),但是你認爲checkout
是你需要的命令是正確的。問題是,checkout
做兩個不同的東西,所以你需要一個路徑參數爲它供給:
git checkout .
從庫的根會做你就好了。
除非問題是新添加未跟蹤文件,但聽起來OP似乎遇到了*更改*超過*添加*的問題。 – blahdiblah
嗯,我也做了一個補充,但我剛剛刪除了該文件。幸運的是小項目!順便說一下,命令做到了!我會接受你的回答,但是你能否告訴我'重設''重設'和'結帳'之間的區別?我只知道'藏匿'會像一個不同的本地分支,以後你可以決定保留或不保留(或類似的東西)。 – Enrichman
'reset'是一個主要對* index *進行操作的命令,可以通過一些附加標誌('--hard'就是其中之一)在工作目錄上進行操作。 'checkout'是一個在您的工作目錄上運行的命令,可以通過檢出樹的內容或更新一組本地路徑(不接觸索引)。 'rebase'是一種重寫你的提交歷史的一部分(作爲一系列補丁)以將其應用於不同的基礎(它與你的問題沒有任何關係)。 –
git reset --hard
這將刪除所有未追蹤的更改以便上次在存儲庫中落實。對要恢復的一些變化起飛的機會
:
git reset --hard
將放棄所有的工作,但你可能想要做的。
不要git reset -hard
這是永恆的!
請使用
git stash -u
,而不是!如果你在那裏有一塊工作不慎發生,你仍然可以恢復。除非您選擇這樣做,否則將永遠不會推送到您的遙控器,方法是將其從分支中取出並推出。
此外,你在正確的軌道上,你可以使用git checkout來完成同樣的事情。語法是git checkout HEAD -- .
。但它有與git reset --hard
相同的問題。堅持藏匿,你將會挽救未來失去你的頭髮。
再回應
上述解決方案恢復所有的更改。但是,你問如何擺脫的一些的變化。我會補充完整性。
要做到這一點,你可以
git add file1 file2 file3
git stash save --patch
現在將提示正是你想要做什麼dissappear ...下來什麼都粒度級別的。因此,如果您選擇這樣做,您可以安全地「拒絕」對單個文件的少量更改。
rebase與此無關。 –
git rebase --hard HEAD? – uday