在 Git 中,撤銷(回退)merge 操作有多種方法

在 Git 中,撤銷(回退)merge 操作有多種方法,具體取決于是否已提交、是否已推送,以及是否需要保留歷史記錄。以下是幾種常見的撤銷 merge 的方法:


1. 未提交 merge(未 commit

如果 merge 后還未提交,可以使用以下方法撤銷:

git merge --abort
  • 這會終止當前的合并操作,并恢復到合并前的狀態。
  • 適用于合并過程中出現沖突,但還未 git commit 的情況。

2. 已提交 merge,但未推送

如果 merge 已提交但未推送到遠程倉庫,可以使用 git reset 回退:

git reset --hard HEAD~1
  • HEAD~1 表示回退到上一個提交(即 merge 之前的狀態)。
  • 使用 --hard 會丟棄所有未提交的更改,慎用。

3. 已推送 merge

如果 merge 已推送到遠程倉庫,可以使用 git revert 生成一個反向提交:

git revert -m 1 <merge-commit-id>
  • -m 1 表示保留主分支的更改(即撤銷合并分支的更改)。
  • 這會創建一個新的提交,撤銷 merge 的更改,但保留歷史記錄。

4. 使用 git reflog 找回歷史記錄

如果誤操作導致丟失提交,可以使用 git reflog 查看操作歷史,并恢復:

git reflog  # 查看操作日志
git reset --hard <commit-id>  # 恢復到指定提交
  • 適用于誤操作后需要找回 merge 前的狀態。

5. 強制回退遠程分支(慎用)

如果 merge 已推送,且需要徹底刪除合并記錄(會修改歷史):

git reset --hard <commit-before-merge>
git push --force origin <branch-name>
  • 注意:這會覆蓋遠程分支,可能導致其他協作者的代碼丟失,需謹慎使用。

6. 撤銷 revert(重新合并)

如果之前用 git revert 撤銷了 merge,但后續需要重新合并:

git revert <revert-commit-id>  # 撤銷之前的 revert
git merge <branch-name>        # 重新合并
  • 適用于需要恢復被撤銷的合并操作。

總結

場景方法適用情況
未提交 mergegit merge --abort合并沖突未提交
已提交未推送git reset --hard HEAD~1本地回退
已推送git revert -m 1 <commit-id>保留歷史記錄
強制回退git reset --hard + git push --force徹底刪除合并記錄
恢復誤操作git reflog + git reset找回丟失的提交

注意事項

  • 使用 --force 推送前,確保團隊其他成員知曉,避免代碼沖突。
  • git revert 適用于需要保留歷史的場景,而 git reset 適用于徹底回退。

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

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

相關文章

基于 Python 的實現:居民用電量數據分析與可視化

基于 Python 的實現:居民用電量數據分析與可視化 本文將介紹如何利用 Python 技術棧(包括 pymysql、pandas、matplotlib 等庫)對居民用電量數據進行分析和可視化,以幫助我們更好地理解用電行為模式。 數據準備 在MySQL數據庫中創建數據,,數據庫表結構如下: date:記錄…

Flow原理

fun main() {runBlocking {launch {flow4.collect{println("---collect-4")}println("---flow4")}}val flow4 flow<Boolean>{delay(5000)emit(false) } 我們分析下整個流程 1.flow為什么之后在collect之后才會發送數據 2.collect的調用流程 我…

設備接入與APP(應用程序)接入華為云iotDA平臺的路徑元素有哪些不同?

目錄 壹、設備接入華為云iotDA &#x1f3e2; 形象比喻&#xff1a;設備 員工&#xff0c;IoTDA 平臺 安保森嚴的總部大樓 一、&#x1f4cd; 平臺接入地址 總部大樓地址 二、&#x1f9fe; 接入憑證 出入證 / 門禁卡 / 工牌 1. 設備密鑰或證書 2. 預置接入憑證密鑰&a…

JavaScript基礎知識合集筆記2——數組排序、數組轉換字符串、迭代方法

文章目錄 排序方法reverse()sort() 轉換方法join() 迭代方法some()every()forEach()filter()map() 排序方法 組有兩個方法可以用來對元素重新排序&#xff1a; reverse()sort() reverse() 顧名思義&#xff0c;將數組元素方向反轉。會直接改變原數組&#xff0c;請謹慎使用…

Redis 筆記(三)-Redis 基本知識及五大數據類型

一、redis 基本知識 redis 默認有 16個 數據庫&#xff0c;config get databases 查看數據庫數量 127.0.0.1:6379> config get databases # 查看數據庫數量 1) "databases" 2) "16"默認使用的是第 0個 16 個數據庫為&#xff1a;DB 0 ~ DB 15&am…

springboot項目文件上傳到服務器本機,返回訪問地址

文件上傳到服務器本機&#xff0c;然后給出訪問地址&#xff1a; 具體如下&#xff1a; 1、添加必要的工具類依賴 <!-- 文件上傳工具類 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId>…

巧用 Element - UI 實現圖片上傳按鈕的智能隱藏

引言 在前端開發中&#xff0c;使用 Element - UI 組件庫來構建用戶界面是非常常見的操作。其中圖片上傳功能更是在許多項目中頻繁出現&#xff0c;比如用戶頭像上傳、商品圖片上傳等場景。有時候&#xff0c;我們會有這樣的需求&#xff1a;當上傳圖片達到一定數量后&#xf…

Golang|工廠模式

工廠模式是一種創建型設計模式&#xff0c;它的核心思想是&#xff1a;把對象的創建過程封裝起來&#xff0c;不直接在代碼中 new 一個對象&#xff0c;而是通過一個“工廠”來生成對象。這樣做的好處是&#xff1a; 降低了代碼之間的耦合&#xff08;依賴具體類減少&#xff0…

CentOS 使用國內鏡像安裝 nvm 和 Node.js 完整指南

前言?&#xff1a; 本文是實踐過程中的個人總結&#xff0c;介紹在 CentOS 系統上通過國內鏡像快速安裝 nvm&#xff08;Node Version Manager&#xff09;&#xff0c;并配置鏡像源加速 Node.js 的下載和依賴管理&#xff0c;解決因網絡問題導致的安裝失敗或速度緩慢。 一、…

ComfyUI 學習筆記:安裝篇及模型下載

背景 去年在掘金看到一個博主使用 ComfyUI 進行 AI 繪畫&#xff0c;并基于此工具展開個人業務。知道了這個東西&#xff0c;感覺很厲害的樣子。 前段時間玩 DeepSeek 的時候&#xff0c;嘗試用它寫《歷史是一群喵》的漫畫&#xff0c;給出了 AI 作畫的提示詞&#xff0c;但是…

人腦、深思考大模型與其他大模型的區別科普

文章目錄 大模型的基本概念與特點深思考大模型的獨特之處深思考大模型與其他大模型的對比架構與技術訓練數據應用場景提示詞編寫 大模型給出答案的方式&#xff1a;基于概率還是真的會分析問題&#xff1f;人腦的思考過程基本單位與網絡大腦結構與功能分區信息處理流程思維模式…

圖像保邊濾波之BEEPS濾波算法

目錄 1 簡介 2 算法原理 3 代碼實現 4 演示Demo 4.1 開發環境 4.2 功能介紹 4.3 下載地址 參考 1 簡介 BEEPS&#xff08;Bias Elimination in Edge-Preserving Smoothing&#xff09; 是一種基于偏微分方程&#xff08;PDE&#xff09;的邊緣保留平滑濾波算法。它能夠…

怎樣給MP3音頻重命名?是時候管理下電腦中的音頻文件名了

在處理大量音頻文件時&#xff0c;給這些文件起一個有意義的名字可以幫助我們更高效地管理和查找所需的內容。通過使用專業的文件重命名工具如簡鹿文件批量重命名工具&#xff0c;可以極大地簡化這一過程。本文將詳細介紹如何利用該工具對 MP3 音頻文件進行重命名。 步驟一&am…

uniapp實現統一添加后端請求Header方法

uniapp把請求寫完了&#xff0c;發現需要給接口請求添加頭部&#xff0c;每個接口去添加又很麻煩&#xff0c;uniapp可以統一添加&#xff0c;并且還能給某些接口設置不添加頭部。 一般用于添加token登錄驗證信息。 在 main.js 文件中配置。 代碼如下&#xff1a; // 在…

Qt/C++面試【速通筆記四】—Qt中的MVC模式

在軟件開發中&#xff0c;設計模式是為了讓代碼結構更加清晰、可維護和擴展的工具。MVC&#xff08;Model-View-Controller&#xff0c;模型-視圖-控制器&#xff09;模式就是其中一種經典的設計模式&#xff0c;它被廣泛應用于圖形界面&#xff08;GUI&#xff09;應用程序中。…

機器學習-入門-線性模型(2)

機器學習-入門-線性模型(2) 3.4廣義線性回歸 一般形式&#xff1a; y g ? 1 ( w T x b ) y g^{-1} \left( w^T x b \right) yg?1(wTxb) 單調可微的聯系函數 (link function) 令 g ( ? ) ln ? ( ? ) g(\cdot) \ln (\cdot) g(?)ln(?) 則得到對數線性回歸 ln ?…

Scratch——第20課 輾轉相除法/繩子算法

輾轉相除法是用于求取最大公約數時需要用到的方法&#xff0c;它還有個名字稱為繩子算法&#xff0c;這類題目只要理解輾轉相處的原理即可拿下。 一、輾轉相除法的基本原理 兩個整數的最大公約數不變&#xff0c;當較大數減去較小數后&#xff0c;得到的差值與較小數的最大公…

【Keil5-開發指南】

Keil5-編程指南 ■ Keil5 介紹■ Keil5 生成bin文件■ 新建工程后debug在 BX R0 不動了■ J-Flash 使用■ Keil5-Debug調試工具 Jlink---STLink---DAP仿真器■ Keil5 使用 AStyle插件格式化代碼■ Keil5-編譯4個階段■ Keil5-Boot和APP配置■ Keil5-報錯■ 芯片手冊區別 ■ Kei…

HarmonyOS SDK助力鴻蒙版今日水印相機,真實地址防護再升級

今日水印相機是一款真實記錄"工作"和"生活"的水印拍照APP。作為專業的可信影像服務平臺&#xff0c;今日水印相機依托時間、地點、身份三重數字水印技術&#xff0c;為企業和個人提供考勤打卡、外勤巡檢、生活美好時刻記錄等場景的可信存證服務。 面對虛擬…

WSL釋放空間

在 WSL (Windows Subsystem for Linux) 中&#xff0c;Linux 發行版可能會占用越來越多的磁盤空間&#xff0c;即使刪除文件后&#xff0c;空間也可能不會自動釋放。這是因為 WSL 使用虛擬硬盤&#xff08;VHDX 文件&#xff09;來存儲 Linux 文件系統&#xff0c;而 Windows 不…