前言
日常的開發,我們難免會建立錯誤的git提交記錄,整個時候git給我們提供了兩個命令來解決這個問題。乙個命令是git reset,另乙個是git revert。兩者有啥區別呢?兩者主要的區別是,git reset命令是回滾某次提交,被回滾的提交將不會出現在提交記錄中,而git revert命令是建立乙個新的提交來達到撤銷的目的,被撤銷的提交和撤銷的提交都會出現在提交記錄中。
準備首先呢,我們還是需要準備乙個git倉庫,並且準備乙個可以修改的檔案,檔名無所謂,我這裡就建立了乙個readme.md檔案:
mkdir git-test
cd git-test
git init
touch readme.md
git add *
git commit -m "init"
git reset
1.修改readme檔案。
2.提交這次修改。
git commit "錯誤的提交"
3.假設剛剛的提交是個錯誤的,我們需要回退,這個是個git reset命令就有用武之地了,我們可以使用它回退到指定的提交。
$ git re程式設計客棧set e431092f22a85deebf7bd6f4f96d9943530b49bf
unstaged changes after reset:
m readme.md
4.我們在使用git status檢視狀態,會發現readme檔案處於乙個被修改的狀態,並且內容沒有發生變化。也就是說git reset會將本地倉庫的指標知到你指定的分支,但是內容不會丟棄,而是放到了工作區,如果你想再次提交還是可以的。
$ git status
on branch master
changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working aduahdirectory)
modified: readme.md
no changes added to commit (u程式設計客棧se "git add" and/or "git commit -a")
如果你想直接丟棄掉,可以加上--hard引數即可。其實git reset有三種回滾方式:
git reset --hard 回滾分支》
git reset --soft 回滾分支》
git reset --mixed 回滾方式》
git revert
有些情況下我們可能不太希望錯誤的提交記錄被完全抹除掉,還是希望它儲存在git的提交記錄中,萬一我們撤銷出錯了還可以有補救的機會。這中情況下我們就需要使用git revert命令來實現。
1.我們來檢視下當前git倉庫的提交記錄。
$ git log
commit 28aef5f811895f7124a3ae0e3b095a37ef9cb299 (head -> master)
author: **無止境
date: sun jun 23 18:08:30 2019 +0800
錯誤的提交
commit e431092f22a85deebf7bd6f4f96d9943530b49bf
author: **無止境
date: sun jun 23 17:23:44 2019 +0800
init
2.現在我們需要將這個錯誤的提交撤銷掉,執行下面的命令就可以了。
git revert 28aef5f811895f7124a3ae0e3b095a37ef9cb299
在執行的過程中會跳出來乙個vi編輯介面,讓我們編輯撤銷提交的message資訊,預設為revert "被撤銷提交的message",當然我們可以進行編輯。
3.在使用git log命令檢視提交日誌,我們會發現被撤銷的提交和撤銷的提交都出現在提交記錄中,然後你去檢視readme檔案的內容,會發現已經回滾回去了。
$ git log
commit ef836162c8f4cf75086151e517339789dd937453 (head -> master)
author: **無止境
date: sun jun 23 18:13:27 2019 +0800aduah
revert "錯誤的提交"
this reverts commit 28aef5f811895f7124a3ae0e3b095a37ef9cb299.
commit 28aef5f811895f7124a3ae0e3b095a37ef9cb299
author: **無止境
date: sun jun 23 18:08:30 2019 +0800
錯誤的提交
commit e431092f22a85deebf7bd6f4f96d9943530b49bf
author: **無止境
date: sun jun 23 17:23:44 2019 +0800
init
結束語本文標題: git使用小技巧之回滾與撤銷詳解
本文位址: /wangluo/xiangguanjiqiao/264856.html
git撤銷與回滾
1 檔案修改了,沒有進行add操作 git checkout filename git checkout 2 對不想提交的檔案進行了git add操作 git status git reset head 3 修改的檔案已被git commit,但想再次修改不再產生新的commit git commi...
git後悔藥之如何回滾
預備知識 git將專案的儲存分為4部分,每部分有自己作用,見下圖 整體過程可以簡述為 假設專案存在這麼乙個提交記錄 git log commit commit id4 head master author test date thu aug 20 16 28 45 2020 0800 第三次修改re...
如何使用Git優雅的回滾實現
開發過程中,我們經常會遇到 回滾的情況。正常人都知道,git 回滾有兩大寶 當我們在本地開發,還未git push到遠端時,可以毫無顧忌的使用git reset進行回滾。更多的情況中,我們不僅 push 了,而且由於開發周期長,在開發過程中不斷的merge master和merge other br...