git revert 用法實戰:撤銷一個 commit 或 merge

git revert

1 區別

? 常規的 commit (使用 git commit 提交的 commit)
? merge commit

2 首先構建場景

master上的代碼
在這里插入圖片描述
dev開發分支上,添加一個a標簽,并commit這次提交
在這里插入圖片描述
切到master上,再次進行改動和提交
在這里插入圖片描述
將dev的代碼合到master后,當前的分支圖如下所示:

在這里插入圖片描述
merge commit 和普通 commit 的不同之處在于:
merge commit 包含兩個 parent commit,代表該 merge commit 是從這兩個 commit 合并過來的

使用 git log 查看歷史提交記錄

在這里插入圖片描述

也可以使用git show查看這個merge的詳細信息

在這里插入圖片描述

這代表該 merge commit 是從 81eb85d 和 eod12f6 兩個 commit 合并過來的

而常規的 commit 則沒有 Merge 行

在這里插入圖片描述

3 revert 常規 commit

使用 git revert 即可(commit id是希望刪除的Commit ID值)
git 會生成一個新的 commit,會將將定的 commit 內容從當前分支上撤除。

在這里插入圖片描述

4 revert merge commit

在這里插入圖片描述
但如果直接使用 git revert ,git 也不知道到底要撤除哪一條分支上的內容
這時需要指定一個"主線",主線的內容將會保留,而另一條分支的內容將被 revert

從前面git show的命令中,可以看到,merge commit 的 parent 分別為
? 81eb85d(代表master分支)
? eod12f6(代表dev分支)
在這里插入圖片描述
在這里插入圖片描述
我們需要保留master分支的內容(主線),將dev分支的內容移除,操作如下:

git revert -m <主線> <commit ID>
git revert -m 1 c0702d261f7be5e93d1b6646d91bec9dabde2a19

因為左邊的第一個(81eb85d)式主線,所以,主線為1

代碼去掉了上次合并內容:
在這里插入圖片描述
分支圖如下:

在這里插入圖片描述

5 revert之后的重新合并

假設A在自己分支dev上開發功能,并合并到了master,之后 master 上又提交了一個修改 g,這時提交歷史如下:

在這里插入圖片描述

突然大家發現A的分支存在嚴重的bug,需要revert掉,于是就把這次合并revert掉了,記為H

在這里插入圖片描述

然后A回到自己的分支dev上,修改好了bug,直覺上只需要再次merge到master了就可以,像這樣

在這里插入圖片描述
但是這不能得到期望的結果,這樣合并的結果,并不會包含 c、d的代碼,只有 i 的代碼 (因為 c 和 d 兩個提交曾經被丟棄過)

所以,如果想恢復整個dev分支 所做的修改,應該先把 H revert 掉:

在這里插入圖片描述

其中 H" 是對 H 的 revert 操作生成的新 commit,把之前撤銷合并時丟棄的代碼恢復了回來,然后再 merge 佳怡的分支dev,就可以把解決 bug 寫的新代碼合并到 master 分支

6 git reset 和 git revert區別

revert再當前版本的基礎上新增一個版本,不影響以前的代碼在版本四想要回退時在這里插入圖片描述
reset該命令會強行覆蓋當前版本和要回退的版本之間的其他版本(不太建議)在版本四想要回退時在這里插入圖片描述

希望去掉最新的一次commit

在這里插入圖片描述

分支圖如下,

在這里插入圖片描述
git log 查看歷史記錄

在這里插入圖片描述
執行:git reset a7961ff9760e49e5736f7b43794f44ed18b09ce5
從分支圖上,可以看到最新的commit記錄會被強行覆蓋而失去了

在這里插入圖片描述
上一次修改的內容,會變成待提交的狀態

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74895.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74895.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74895.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自然語言處理|高效法律助手:AI如何解析合同條款?

引言&#xff1a;法律 AI 的崛起 在數字化浪潮快速發展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是一個陌生的概念&#xff0c;它正以快速發展滲透到各個領域&#xff0c;法律行業也不例外。從智能合同審查到法律風險預測&#xff0c;AI 技術為法律工作帶來…

【數據分享】2000—2024年我國鄉鎮的逐年歸一化植被指數(NDVI)數據(年最大值/Shp/Excel格式)

之前我們分享過2000-2024年我國逐年的歸一化植被指數&#xff08;NDVI&#xff09;柵格數據&#xff0c;該逐年數據是取的當年月歸一化植被指數&#xff08;NDVI&#xff09;的年最大值&#xff01;另外&#xff0c;我們基于此年度柵格數據按照行政區劃取平均值&#xff0c;得到…

辦公網絡健康監控(域名健康監控)

需求 辦公室訪問一些網絡經常出現故障 現需要時時觀察監控這些網絡的健康 包含專線網等其他網絡 實施 支持 SNMP 且支持 Webhook 發送報警的開源監控系統 hertzbeat:關系型數據庫+時序數據庫; Zabbix:關系型數據庫; LibreNMS:關系型數據庫; Prometheus(包含ale…

藍橋杯 合并數列

問題描述 小明發現有很多方案可以把一個很大的正整數拆成若干個正整數的和。他采用了其中兩種方案&#xff0c;分別將它們列為兩個數組&#xff1a; {a?, a?, ..., a?}{b?, b?, ..., b?} 兩個數組的元素和相同。 定義一次合并操作為&#xff1a;將某個數組中相鄰的兩…

【行駛證識別】批量咕嘎OCR識別行駛證照片復印件圖片里的文字信息保存表格或改名字,基于QT和騰訊云api_ocr的實現方式

項目背景 在許多業務場景中,如物流管理、車輛租賃、保險理賠等,常常需要處理大量的行駛證照片復印件。手動錄入行駛證上的文字信息,像車主姓名、車輛型號、車牌號碼等,不僅效率低下,還容易出現人為錯誤。借助 OCR(光學字符識別)技術,能夠自動識別行駛證圖片中的文字信…

個人學習編程(3-29) leetcode刷題

最后一個單詞的長度&#xff1a; 思路&#xff1a;跳過末尾的空格&#xff0c;可以從后向前遍歷 然后再利用 while(i>0 && s[i] ! ) 可以得到字符串的長度&#xff0c; int lengthOfLastWord(char* s) {int length 0;int i strlen(s) - 1; //從字符串末尾開始//…

PAT甲級(Advanced Level) Practice 1028 List Sorting

原題 1028 List Sorting - PAT (Advanced Level) Practice 題目大意 輸入n個學生的id、姓名、分數&#xff0c;再輸入C表示對C列進行排序。 id&#xff1a;從小到大排 姓名&#xff1a;姓名不同時從小到大排&#xff0c;相同時id從小到大排 分數&#xff1a;不同時從小到…

UE4學習筆記 FPS游戲制作20 重寫機器人和玩家死亡 切換相機和模型

定義父類中的死亡方法 在父類中定義OnDie方法&#xff0c;不需要實現&#xff0c;由子類實現各自的死亡邏輯 新建一個Die方法&#xff0c;處理公共的死亡邏輯 Die的實現&#xff1a; 以前的分離控制現在要延遲做&#xff0c;如果分離了控制器&#xff0c;就無法再獲取到玩家的…

Linux信號的誕生與歸宿:內核如何管理信號的生成、阻塞和遞達?

個人主頁&#xff1a;敲上癮-CSDN博客 個人專欄&#xff1a;Linux學習、游戲、數據結構、c語言基礎、c學習、算法 目錄 一、認識信號 二、信號的產生 1.鍵盤輸入 2.系統調用 3.系統指令 4.硬件異常 5.軟件條件 三、信號的保存 1.block 2.pending 3.handler 四、信號…

DeepSeek API集成開發指南——Flask示例實踐

DeepSeek API集成開發指南——Flask示例實踐 序言&#xff1a;智能化開發新范式 DeepSeek API提供了覆蓋自然語言處理、代碼生成等多領域的先進AI能力。本文將以一個功能完備的Flask示例系統為載體&#xff0c;詳解API的集成方法與最佳實踐。通過本案例&#xff0c;開發者可快…

Linux環境下安裝部署Docker

windows下連接Linux&#xff1a; 打開終端&#xff1a; //ssh遠程連接 ssh root192.168.xx.xx//輸入賬號密碼 root192.168.xx.xxs password: ssh連接成功&#xff01; 安裝Docker&#xff1a; //安裝Docker yum install -y yum-utils device-mapper-persistent-data lvm2 …

開源CDN產品-GoEdge

一、背景 上篇文章分析了一下CDN的基本原理以及使用代碼實現了一個乞丐版的智能DNS調度器。從整個例子我們可以清晰了解到CDN原理&#xff0c;也就那么回事。 但是&#xff0c;之前也講過了&#xff0c;CDN產品融合的技術比較雜、也比較多。所以我就想著&#xff0c;萬物皆有開…

正則表達式-萬能表達式

1、正則 正則表達式是一組由字母和符號組成的特殊文本, 它可以用來從文本中找 出滿足你想要的格式的句子. {“basketId”: 0, “count”: 1, “prodId”: #prodId#, “shopId”: 1, “skuId”: #skuId#} #prodId# re相關的文章&#xff1a; https://www.cnblogs.com/Simple-S…

javaWeb Router

一、路由簡介 1、什么是路由&#xff1f; - 定義&#xff1a;路由就是根據不同的 URL 地址展示不同的內容或頁面。 - 通俗理解&#xff1a;路由就像是一個地圖&#xff0c;我們要去不同的地方&#xff0c;需要通過不同的路線進行導航。 2、路由的作用 - 單頁應用程序…

【前端】使用 HTML、CSS 和 JavaScript 創建一個數字時鐘和搜索功能的網頁

文章目錄 ?前言?一、項目結構?二、HTML 結構?三、CSS 樣式?四、JavaScript 功能?五、運行效果?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧&#xff08;,NET/Java/Python/C&#xff09;、數…

聚焦應用常用功能,提升用戶體驗與分發效率

隨著HarmonyOS應用的持續發展&#xff0c;應用的功能將越來越豐富&#xff0c;實際上80%的用戶使用時長都會集中在20%的特性上&#xff0c;其余的功能可能也僅僅是面向部分用戶。 用戶在下載應用時&#xff0c;如果應用包含大量的功能和資源&#xff0c;可能會導致下載時間過長…

OCR 識別案例

OCR 識別案例 注意點&#xff1a;輸入圖像尺寸比例盡量和參與模型訓練的數據集比例相似&#xff0c;識別效果會更好。 1、pytesseract Pytesseract是一個Python的光學字符識別&#xff08;OCR&#xff09;工具&#xff0c;它作為Tesseract OCR引擎的封裝&#xff0c;允許你在…

IP大洗牌ipv6強勢來襲!!!【ipv6配置及應用】

前言 隨著時代的發展&#xff0c;IPv4&#xff08;互聯網協議第四版&#xff09;已逐漸無法滿足全球互聯網爆炸式增長的需求。自20世紀80年代誕生以來&#xff0c;IPv4憑借其簡潔的架構和約43億的地址容量&#xff0c;支撐了互聯網的早期擴張。然而&#xff0c;在移動互聯網、物…

OpenAI 推出圖像生成新突破:GPT-4o 實現圖像編輯對話化

關鍵要點 OpenAI 推出了 4o 圖像生成功能&#xff0c;集成于 GPT-4o&#xff0c;提供精準且逼真的圖像生成。 它似乎適用于多種用戶&#xff0c;包括免費用戶&#xff0c;API 訪問預計幾周內推出。 安全措施包括 C2PA 元數據和內容屏蔽&#xff0c;限制生成不適當圖像。 研究…

如何快速對比兩個不同的excel文件中的單元格的數據是否完全相同 并把不同的單元格的背景顏色更改為紅色?

要快速對比兩個不同的Excel文件中的單元格數據是否完全相同&#xff0c;并將不同的單元格背景顏色更改為紅色&#xff0c;可以使用Excel的以下幾種方法&#xff1a; 方法一&#xff1a;使用條件格式 打開兩個Excel文件。將一個文件的內容復制到另一個文件的新工作表中&#x…