Git 之 恢復修改的文件

對於恢復修改的文件,就是將文件從倉庫中拉到本地工做區,即 倉庫區 ----> 暫存區 ----> 工做區。git

對於修改的文件有兩種狀況:spa

  • 只是修改了文件,沒有任何 git 操做
  • 修改了文件,並提交到暫存區(即編輯以後,$ git add 但沒有 $ git commit -m ....)
  • 修改了文件,並提交到倉庫區(即編輯以後,$ git add 和 $ git commit -m ....)

狀況I

只是修改了文件,沒有任何 git 操做,直接一個命令就可回退:code

$ git checkout -- aaa.txt # aaa.txt爲文件名

狀況II

修改了文件,並提交到暫存區(即編輯以後,$ git add 但沒有 $ git commit -m ....)blog

$ git log --oneline    # 能夠省略
$ git reset HEAD    # 回退到當前版本
$ git checkout -- aaa.txt    # aaa.txt爲文件名

 狀況III

修改了文件,並提交到倉庫區(即編輯以後,$ git add 和 $ git commit -m ....)it

 

$ git log --oneline    # 能夠省略
$ git reset HEAD^    # 回退到上一個版本
$ git checkout -- aaa.txt    # aaa.txt爲文件名

 

【注1】狀況II 和 狀況III 只有回退的版本不同,class

對於 狀況II,並無 $ git commit,倉庫版本也就不會更新和記錄,因此回退的是當前版本im

對於狀況III,一旦 $ git commit,倉庫版本就會更新並記錄,因此要回退的也就是上一個版本d3

【注2】$ git reset 版本號    ----  將暫緩區回退到指定版本img

根據 $ git log --oneline 顯示的版本號(下圖黃色的字),能夠回退到任何一個版本,也可經過 HEAD 來指定版本(下圖紅色的字)。di

以舊圖舉例:

相關文章
相關標籤/搜索