對於恢復修改的檔案,就是將檔案從倉庫中拉到本地工作區,即 倉庫區 ----> 暫存區 ----> 工作區。
對於修改的檔案有兩種情況:
只是修改了檔案,沒有任何 git 操作,直接乙個命令就可回退:
$ git checkout -- aaa.txt # aaa.txt為檔名修改了檔案,並提交到暫存區(即編輯之後,git
add但
沒有'>gitadd但沒有
gitadd但沒有 git commit -m ....)
$ git log --oneline # 可以省略修改了檔案,並提交到倉庫區(即編輯之後,git$ git resethead# 回退到當前版本
$ git checkout -- aaa.txt # aaa.txt為檔名
add和
'>gitadd和
gitadd和 git commit -m ....)
$ git log --oneline # 可以省略【注1】情況ii 和 情況iii 只有回退的版本不一樣,$ git resethead^# 回退到上乙個版本
$ git checkout -- aaa.txt # aaa.txt為檔名
對於 情況ii,並沒有 $ git commit,倉庫版本也就不會更新和記錄,所以回退的是當前版本
對於情況iii,一旦 $ git commit,倉庫版本就會更新並記錄,所以要回退的也就是上乙個版本
【注2】$ git reset 版本號 ---- 將暫緩區回退到指定版本
根據 $ git log --oneline 顯示的版本號(下圖黃色的字),可以回退到任何乙個版本,也可通過 head 來指定版本(下圖紅色的字)。
以舊圖舉例:
git恢復被修改的檔案
恢復到最後一次提交的改動 git checkout 需要恢復的檔名 但是,需要注意的是,如果該檔案已經 add 到暫存佇列中,上面的命令就不靈光嘍 需要先讓這個檔案取消暫存 git reset head 需要取消暫存的檔名 然後再使用第一條命令。如果感覺命令多了記不住,那就做一兩個匿名唄,比如 gi...
git恢復被修改的檔案
恢復到最後一次提交的改動 git checkout 需要恢復的檔名 但是,需要注意的是,如果該檔案已經 add 到暫存佇列中,上面的命令就不靈光嘍 需要先讓這個檔案取消暫存 git reset head 需要取消暫存的檔名 然後再使用第一條命令。如果感覺命令多了記不住,那就做一兩個匿名唄,比如 gi...
git恢復被修改的檔案
恢復到最後一次提交的改動 git checkout 需要恢復的檔名 但是,需要注意的是,如果該檔案已經 add 到暫存佇列中,上面的命令就不靈光嘍 需要先讓這個檔案取消暫存 git reset head 需要取消暫存的檔名 然後再使用第一條命令。如果感覺命令多了記不住,那就做一兩個匿名唄,比如 gi...