使用Git實(shí)現(xiàn)revert的完整操作步驟
一、git revert核心概念
git revert 是最安全的代碼回退方式,它不會(huì)刪除/修改歷史提交記錄,而是生成一個(gè)新的提交,用這個(gè)新提交來(lái)“抵消”目標(biāo)提交的所有修改。這種方式適合:
- 已推送到遠(yuǎn)程倉(cāng)庫(kù)的代碼(避免修改公共歷史)
- 需要保留回退痕跡、便于追溯的場(chǎng)景
- 團(tuán)隊(duì)協(xié)作中回退代碼(不影響他人工作)
二、git revert完整操作步驟(以你的機(jī)械臂場(chǎng)景為例)
步驟 1:查看提交歷史,找到要撤銷(xiāo)的 Commit ID
先通過(guò)日志找到需要撤銷(xiāo)的目標(biāo)提交的哈希值(前7位即可):
# 查看簡(jiǎn)潔的提交歷史(推薦) git log --oneline # 查看詳細(xì)的提交歷史(包含作者、時(shí)間、完整Commit ID) git log
示例輸出(--oneline 模式):
a87b9c0 (HEAD -> main) 優(yōu)化機(jī)械臂J3角度判斷邏輯 5d6e7f8 初始化機(jī)械臂笛卡爾坐標(biāo)獲取 9b8a7s6 新增手型切換基礎(chǔ)邏輯
假設(shè)你要撤銷(xiāo)的是 a87b9c0 這個(gè)“優(yōu)化J3角度判斷”的提交。
步驟 2:執(zhí)行g(shù)it revert撤銷(xiāo)目標(biāo)提交
基礎(chǔ)用法(撤銷(xiāo)單個(gè)提交)
# 撤銷(xiāo)指定Commit ID的提交,會(huì)自動(dòng)打開(kāi)提交信息編輯器 git revert a87b9c0
執(zhí)行后 Git 會(huì)自動(dòng)生成一個(gè)默認(rèn)的 revert 提交信息(比如 Revert "優(yōu)化機(jī)械臂J3角度判斷邏輯"),你可以按之前講的規(guī)范修改(補(bǔ)充原因、關(guān)聯(lián)工單等),修改完成后:
- 按
Esc退出編輯模式 - 輸入
:wq保存并退出(vim編輯器操作)
快速提交(無(wú)需打開(kāi)編輯器)
如果不想手動(dòng)編輯提交信息,可直接用 -m 參數(shù)指定信息:
git revert a87b9c0 -m "revert: 撤銷(xiāo)機(jī)械臂J3角度判斷邏輯的修改 (#123) 原因:J3角度范圍判斷覆蓋不全,導(dǎo)致手型誤判 撤銷(xiāo)的提交ID:a87b9c0"
步驟 3:處理 revert 過(guò)程中的沖突(常見(jiàn)場(chǎng)景)
如果目標(biāo)提交的修改和當(dāng)前代碼有沖突(比如你在撤銷(xiāo)前又改了同一行代碼),Git 會(huì)提示沖突,此時(shí):
查看沖突文件:
git status
沖突文件會(huì)被標(biāo)記為 both modified。
打開(kāi)沖突文件,手動(dòng)解決沖突:
沖突處會(huì)顯示如下格式,你需要保留正確的代碼,刪除沖突標(biāo)記:
<<<<<<< HEAD # 當(dāng)前分支的代碼 elbow_x = shoulder_x + 10 # 現(xiàn)有邏輯 ======= # 被撤銷(xiāo)提交的代碼 elbow_x = shoulder_x + 5 # 要撤銷(xiāo)的邏輯 >>>>>>> a87b9c0 (優(yōu)化機(jī)械臂J3角度判斷邏輯)
解決沖突后,標(biāo)記文件為已解決,并完成 revert:
# 標(biāo)記沖突文件已解決 git add 沖突文件名.py # 完成 revert 提交 git revert --continue
如果想放棄這次 revert,執(zhí)行:
git revert --abort
步驟 4:推送 revert 提交到遠(yuǎn)程倉(cāng)庫(kù)
撤銷(xiāo)完成后,將新生成的 revert 提交推送到遠(yuǎn)程(比如 main 分支):
git push origin main
三、進(jìn)階場(chǎng)景:撤銷(xiāo)多個(gè)提交/合并提交
1. 撤銷(xiāo)連續(xù)的多個(gè)提交
比如要撤銷(xiāo) a87b9c0 到 9b8a7s6 之間的所有提交(注意順序:舊提交在前,新提交在后):
git revert 9b8a7s6..a87b9c0
2. 撤銷(xiāo)合并提交(需指定父節(jié)點(diǎn))
如果要撤銷(xiāo)的是合并分支的提交,需要加 -m 參數(shù)指定父節(jié)點(diǎn)(通常用 1 表示主分支):
# 撤銷(xiāo)合并提交(Commit ID為合并提交的ID) git revert 合并提交ID -m 1
四、git revertvsgit reset(新手必區(qū)分)
| 特性 | git revert | git reset |
|---|---|---|
| 歷史記錄 | 保留所有提交(新增revert提交) | 刪除指定提交后的所有記錄 |
| 適用場(chǎng)景 | 已推送的遠(yuǎn)程代碼 | 本地未推送的代碼 |
| 團(tuán)隊(duì)協(xié)作 | 安全(不影響他人) | 危險(xiǎn)(會(huì)覆蓋遠(yuǎn)程歷史) |
| 可追溯性 | 強(qiáng)(能看到撤銷(xiāo)過(guò)程) | 弱(歷史記錄被刪除) |
總結(jié)
git revert是安全的回退方式,核心是生成新提交抵消舊修改,適合已推送的代碼。- 核心操作流程:
查看Commit ID → 執(zhí)行g(shù)it revert → 處理沖突(如有)→ 推送遠(yuǎn)程。 - 提交信息要包含「操作類(lèi)型+撤銷(xiāo)原因+目標(biāo)Commit ID」,便于團(tuán)隊(duì)追溯。
到此這篇關(guān)于使用Git實(shí)現(xiàn)revert的完整操作步驟的文章就介紹到這了,更多相關(guān)Git實(shí)現(xiàn)revert步驟內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
搭建一個(gè)開(kāi)源項(xiàng)目?jī)煞N方式安裝git的詳細(xì)教程
這篇文章主要介紹了搭建一個(gè)開(kāi)源項(xiàng)目?jī)煞N方式安裝git,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Git上有更新而本地?zé)o更新時(shí)的解決過(guò)程
文章解決分支名不匹配導(dǎo)致的推送沖突問(wèn)題,建議先拉取遠(yuǎn)程更新,手動(dòng)解決沖突并提交,若需強(qiáng)制推送需謹(jǐn)慎,可能覆蓋遠(yuǎn)程內(nèi)容2025-09-09
Web 開(kāi)發(fā)中遇到的UTF-8編碼的問(wèn)題總結(jié)
一個(gè)網(wǎng)站如果需要國(guó)際化,就需要將編碼從GB2312轉(zhuǎn)成UTF-8,其中有很多的問(wèn)題需要注意,如果沒(méi)有轉(zhuǎn)換徹底,將會(huì)有很多的編碼問(wèn)題出現(xiàn)!2010-02-02
頁(yè)面制作統(tǒng)一的頭尾的方法(asp+js)
有時(shí)候我們需要統(tǒng)一頁(yè)面的頭尾,如果不是獨(dú)立,每次要修改文件,就要所有的模板頁(yè)面都要修改增加麻煩,所以,獨(dú)立頭尾調(diào)用,就只需要修改兩個(gè)頁(yè)面就可以了。2009-04-04

