在此之前,我們先了解一下工作區和暫存區:
工作區(Working Directory)
就是你在電腦裡能看到的目錄,比如下面的
learngit
檔案夾就是一個工作區:

暫存區
工作區有一個隐藏目錄
.git
,這個不算工作區,而是Git的版本庫(Repository)。
Git 的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有 Git 為我們自動建立的第一個分支 master,以及指向
master
的一個指針叫
HEAD
。
git add
把檔案添加進去,實際上就是把檔案修改添加到暫存區;
git commit
送出更改,實際上就是把暫存區的所有内容送出到目前分支。
總的來說就是需要送出的檔案修改通通放到暫存區,然後,一次性送出暫存區的所有修改。
下面開始正題,要退回到目前版本需要分情況
1、沒有 add(沒有添加到暫存區)
這裡隻有一步就是:丢棄工作區的修改
撤銷一個檔案修改:
git
撤銷全部檔案修改:
git checkout -- .
2、已經 add,但是沒有 commit(已經添加到暫存區)
第一步:撤銷暫存區的檔案(撤銷add)
把暫存區的修改撤銷掉(unstage),重新放回工作區:
git reset HEAD <file>
撤銷這次所有暫存區的檔案
git reset HEAD .
第二步:丢棄工作區的修改
這個就是跟
沒有 add(沒有添加到暫存區)
的處理一樣:
git
git checkout -- .
參考資料
- 【廖雪峰的官方網站:git教程】
- 【git常用操作】