Git --恢復修改的文件
阿新 • • 發佈:2019-02-07
ssis ssi comm git reset img XML str commit 文件
對於恢復修改的文件,就是將文件從倉庫中拉到本地工作區,即 倉庫區 ----> 暫存區 ----> 工作區。
對於修改的文件有兩種情況:
- 只是修改了文件,沒有任何 git 操作
- 修改了文件,並提交到暫存區(即編輯之後,gitadd但沒有gitadd但沒有 git commit -m ....)
- 修改了文件,並提交到倉庫區(即編輯之後,gitadd和gitadd和 git commit -m ....)
情況I:
只是修改了文件,沒有任何 git 操作,直接一個命令就可回退:
$ git checkout -- aaa.txt # aaa.txt為文件名
情況II:
修改了文件,並提交到暫存區(即編輯之後,gitadd但沒有gitadd但沒有 git commit -m ....)
$ git log --oneline # 可以省略 $ git reset HEAD # 回退到當前版本 $ git checkout -- aaa.txt # aaa.txt為文件名
情況III:
修改了文件,並提交到倉庫區(即編輯之後,gitadd和gitadd和 git commit -m ....)
$ git log --oneline # 可以省略 $ git reset HEAD^ # 回退到上一個版本 $ git checkout -- aaa.txt # aaa.txt為文件名
【註1】情況II 和 情況III 只有回退的版本不一樣,
對於 情況II,並沒有 $ git commit,倉庫版本也就不會更新和記錄,所以回退的是當前版本
對於情況III,一旦 $ git commit,倉庫版本就會更新並記錄,所以要回退的也就是上一個版本
【註2】$ git reset 版本號 ---- 將暫緩區回退到指定版本
根據 $ git log --oneline 顯示的版本號(下圖黃色的字),可以回退到任何一個版本,也可通過 HEAD 來指定版本(下圖紅色的字)。
以舊圖舉例:
Git --恢復修改的文件