git reset 使用及回滾
阿新 • • 發佈:2018-12-11
目錄
一、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
撤回新增