最近正在學習git,想要透過把學到的東西寫下來,來記錄一下自己學到的東西,也方便以後回顧這些知識。
剛開始寫這種類似技術性的文章,可能有很多地方寫得不好,還請高手們不吝指教。
在修改檔案的時候可能常常會有已經暫存、提交的檔案,因為種種緣故,又要再重新拿回來修,又或者是推錯檔案等等,這時候就很需要git的回復功能。
只要檔案有加入過commit,那檔案都能被還原。
要取消暫存,需要使用git reset
的指令。
比如說,有一個A.html被我git add
到stage了,我想要將他退回,那我需要在終端機輸入git reset -- <檔案名稱>
,這裡的狀況檔案名稱就是A.html,使用這個指令後,A.html就會從stage中被退回,回到「已修改,但尚未被git追蹤」的狀態,可以用git status
查看狀態。
如果要一次將所有stage的檔案退回,可以用git reset .
。
如果檔案已經修改,但是後來發現還是以前好,想要捨棄變更時,可以使用git checkout -- <檔案名稱>
。使用這個指令就像遊戲中讀取上一個存檔點,會將進度回復到上次儲存的地方一樣,檔案會回復成上次commit的狀態。
如果已經將檔案commit上去,但是後來想想還是回復上一個版本好了,那就可以使用git reset HEAD^
或git reset HEAD~1
,兩個功能是一樣的,都代表要將commit的版本回復到前一個版本。使用後,原本commit上去的版本會退回到工作資料夾待處理。此時,用git log
看提交紀錄,也會發現這次的提交紀錄不見了。
如果連退回的檔案都不需要的話,那可以使用git reset HEAD^ --hard
,--hard
代表在還原過程中,要把檔案捨棄。
如果要回復到上上個、上上上個...好幾個版本以前的話,可以在HEAD
後面處理。例如說,要到上上個版本,輸入git reset HEAD^^
,^^
就是兩個版本以前的意思。或著也可以輸入git reset HEAD~2
、git reset HEAD^2
,波浪符、^
後面的數字是要回復到幾個版本以前的意思。