Git版本回退之reset和revert使用詳解
Git版本回退之reset和revert
在開(kāi)發(fā)過(guò)程中,可能會(huì)遇到過(guò)錯(cuò)誤提交的情況。這種情況下,先不要著急,可以通過(guò)以下兩個(gè)命令來(lái)幫助你優(yōu)雅的實(shí)現(xiàn)版本回退。
git reset
假如現(xiàn)在有如下幾個(gè)提交:

其中:A 和 B 是正常提交,而 C 和 D 是錯(cuò)誤提交。現(xiàn)在想把 C 和 D 回退掉。而此時(shí)HEAD 指針指向 D 提交(5lk4er)。我們只需將 HEAD 指針移動(dòng)到 B 提交(a0fvf8),即可。
這個(gè)時(shí)候就可以使用git reset 命令:
git reset --hard a0fvf8 // 將HEAD指針移動(dòng)到B提交點(diǎn) git push origin HEAD --force // 將提交強(qiáng)制推到遠(yuǎn)程倉(cāng)庫(kù)
此時(shí)HEAD指針就會(huì)移動(dòng)到 B 提交下:

采用這種方式回退代碼會(huì)使 HEAD 指針往回移動(dòng),從而會(huì)失去之后的提交信息且不可恢復(fù),所以要慎重使用。
git revert
git revert會(huì)創(chuàng)建一個(gè)新的版本,且HEAD指針會(huì)指向這個(gè)新生成的版本,原來(lái)錯(cuò)誤提交信息也可以保留。
可以通過(guò)用git revert 命令逐個(gè)回退:
git revert 5lk4ergit revert 76sdeb

回退版本少的可以逐個(gè)回退,多的話就要批量回退了:
git revert OLDER_COMMIT^..NEWER_COMMIT
通過(guò)對(duì)比發(fā)現(xiàn),git reset 會(huì)失去后面的提交,而 git revert 是通過(guò)反做的方式重新創(chuàng)建一個(gè)新的提交,而保留原有的提交。所以應(yīng)盡量使用 git revert 命令來(lái)回退版本,慎重使用 git reset 命令。
補(bǔ)充
假如現(xiàn)在有三個(gè)提交,不巧的是那個(gè)錯(cuò)誤的提交剛好位于中間

此時(shí)直接使用 git reset 命令將 HEAD 指針重置到 A 提交顯然是不行的,因?yàn)?C 提交是正確的,需要保留的。
正確的做法:先把 C 和 B 提交全部回退,再使用 cherry-pick 命令將 C 提交重新再生成一個(gè)新的提交 C’’,這樣就實(shí)現(xiàn)了將 B提交回退的需求。

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
git提交報(bào)錯(cuò)pre -commit hook failed (add 
這篇文章主要介紹了git提交報(bào)錯(cuò)pre -commit hook failed (add --no-verify)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
關(guān)于圖片存儲(chǔ)格式的整理(JPEG格式介紹)
這篇文章主要介紹了關(guān)于圖片存儲(chǔ)格式的整理(JPEG),需要的朋友可以參考下2016-01-01
BERT vs GPT自然語(yǔ)言處理中的關(guān)鍵差異詳解
這篇文章主要為大家介紹了BERT vs GPT自然語(yǔ)言處理中的關(guān)鍵差異詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator使用教程
這篇文章主要介紹了關(guān)于Unity動(dòng)畫(huà)狀態(tài)機(jī)Animator的使用教程,有需要的朋友可以借鑒參考下,希望可以對(duì)廣大讀者朋友能夠有所幫助2021-09-09
Git如何查看歷史提交及其參數(shù)設(shè)定的常用命令詳解
查看 Git 提交歷史可以幫助你了解代碼的變更情況和開(kāi)發(fā)進(jìn)度,Git 提供了多種命令和選項(xiàng)來(lái)查看提交歷史,從簡(jiǎn)單的日志到詳細(xì)的差異對(duì)比,本文給大家介紹了Git如何查看歷史提交及其參數(shù)設(shè)定的常用命令,需要的朋友可以參考下2025-07-07
Git建立本地倉(cāng)庫(kù)并上傳到Gitee的詳細(xì)步驟
這篇文章主要介紹了Git建立本地倉(cāng)庫(kù)并上傳到Gitee,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08

