1. 程式人生 > >git reset 使用及回滾

git reset 使用及回滾

目錄

一、git reset 引數

1. --soft  

僅僅移動當前Head指標,不會改變工作區和暫存區的內容  

2.  --mixed  

是reset的預設引數,移動head指標,改變暫存區內容,但不會改變工作區 

3.  --hard  

當前head指標、工作區和暫存區內容全部改變  

那我個人的理解,--soft用處不是很多,當commit之後想撤回commit,但還不想覆蓋工作區內容時,使用--mixed;當想完全回滾時,使用--hard來覆蓋工作區。

二、 如何回滾檔案

1. 修改完,還未執行git add 

git checkout .

使用暫存區的檔案覆蓋工作區,所以執行完git add .之後,再執行該命令是無效的   git checkout .和git add .是一對反義詞

2.使用git add 提交到暫存區,還未commit之前

git reset  先用Head指標覆蓋當前的暫存區內容
git checkout . 再用暫存區內容覆蓋工作區內容

或者使用  

git reset --hard 直接使用head覆蓋當前暫存區和工作區

3.已經git commit,還未git push

git reset --hard origin/master

 從遠端倉庫把程式碼取回來,然後覆蓋本地倉庫、本地暫存區和工作區  

或者使用

 git reset --hard last_commit_id

  覆蓋本地倉庫、暫存區和工作區,其中檢視last_commit_id命令為

 git log

  或者使用

git reset --mixed last_commit_id  

覆蓋本地的暫存區,再執行  

git checkout . 覆蓋本地工作區

4.已經git push  

  那就沒辦法了

實際經常使用的情況有兩種 1. 修改錯了,完全覆蓋掉,使用  

git reset --hard commit_id

2. 錯誤的把大檔案新增到了快取區,使用

git reset

撤回新增