Git 中修改某個特定的commit提交內容

在 Git 中修改某個特定的提交(commit)通常需要使用?交互式變基(Interactive Rebase)?或?修改提交(Commit Amend)。以下是不同場景下的具體操作步驟:


一、修改最近的提交(最新提交)

如果目標提交是最近的提交(即當前?HEAD),可以直接使用?git commit --amend


# 1. 修改文件(可選)
git add <file>            # 將修改的文件加入暫存區# 2. 修改提交信息或內容
git commit --amend        # 修改提交信息或追加文件到最新提交# 3. 強制推送(如果已推送到遠程倉庫)
git push --force          # 慎用!會覆蓋遠程歷史記錄

二、修改歷史提交(舊提交)

若要修改更早的提交(非最新提交),需使用?交互式變基(Interactive Rebase)

1. 啟動交互式變基

# 查看最近 N 個提交的哈希或摘要
git log --oneline# 啟動交互式變基,選擇要修改的提交的前一個提交哈希
git rebase -i <commit-hash>^
# 示例:修改第3個舊提交(假設其哈希為 abc123)
git rebase -i abc123^
2. 標記需要修改的提交

在打開的編輯界面中,將目標提交前的?pick?改為?edit(或?reword?僅修改提交信息):


edit abc123 原提交信息
pick def456 其他提交
3. 修改提交內容或信息
  • 修改文件內容

    
    # 修改文件后添加到暫存區
    git add <file># 將修改追加到當前提交
    git commit --amend       # 可同時修改提交信息

  • 僅修改提交信息

    
    git commit --amend       # 直接修改提交信息

4. 繼續變基操作

git rebase --continue      # 完成當前提交的修改,繼續后續提交
5. 強制推送(若已推送過)

git push --force-with-lease  # 更安全的強制推送(推薦)

三、其他常見操作

1. 拆分提交(Split Commit)

在交互式變基中標記為?edit,然后重置提交并分次提交:


git reset HEAD^            # 撤銷提交但保留修改
git add -p                 # 分步選擇要提交的修改
git commit -m "部分修改"
git commit -m "剩余修改"
git rebase --continue
2. 刪除提交(Delete Commit)

在交互式變基中直接刪除對應行(或標記為?drop)。

3. 調整提交順序

在交互式變基中調整提交行的順序。


四、注意事項

  1. 強制推送的風險
    修改歷史提交后,若已推送到遠程倉庫,需使用?git push --force,這會覆蓋遠程歷史記錄。確保其他協作者知曉此操作!

  2. 沖突處理
    變基過程中若發生沖突,解決沖突后執行:

    
    git add <file>
    git rebase --continue

  3. 終止變基
    若操作出錯,可隨時終止變基并回退:

    
    git rebase --abort


五、示例流程

假設要修改第 2 個舊提交(哈希?abc123):


# 1. 啟動交互式變基
git rebase -i abc123^# 2. 將目標提交標記為 edit
edit abc123 原提交信息
pick def456 其他提交# 3. 修改文件或提交信息
git add <修改后的文件>
git commit --amend# 4. 繼續變基
git rebase --continue# 5. 強制推送
git push --force-with-lease

通過上述方法,可靈活修改任意歷史提交的元數據或內容。建議在操作前備份分支(如?git checkout -b backup-branch)。

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

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

相關文章

ZLMediaKit流媒體服務器

ZLMediaKit 簡介 ZLMediaKit 是一個基于 C11 開發的高性能流媒體服務器框架&#xff0c;支持 RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4 等多種流媒體協議。 主要特性 多協議支持&#xff1a; 支持 RTSP/RTMP/HLS/HTTP-F…

數字電子技術基礎(五十)——硬件描述語言簡介

目錄 1 硬件描述語言簡介 1.1 硬件描述語言簡介 1.2 硬件編程語言的發展歷史 1.3 兩種硬件描述的比較 1.4 硬件描述語言的應用場景 1.5 基本程序結構 1.5.1 基本程序結構 1.5.2 基本語句和描述方法 1.5.3 仿真 1 硬件描述語言簡介 1.1 硬件描述語言簡介 硬件描述語…

SQL系列:常用函數

1、【MySQL】合并字段函數&#xff08;列轉行&#xff09; 它可以將兩個字段中的數據合并到一個字段中。 1&#xff09;CONCAT函數 CONCAT函數可以將多個字段中的數據合并到一個字段中。它的語法格式如下&#xff1a; SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELEC…

多線程和線程同步

多線程在項目開發中使用頻率高,使用多線程能夠提高程序的并發性 提高程序的并發性:1.多線程,對系統資源的消耗更小一些 2.多進程 系統的cpu資源有線,cpu時間片被分好后,由系統進行調度,每個線程在執行的時候都需要搶這個cpu的時間片。如果搶到了,就執行,如果沒搶到,…

時序數據預測:TDengine 與機器學習框架的結合(一)

一、引言 在當今數字化時代&#xff0c;時序數據如潮水般涌來&#xff0c;廣泛存在于物聯網、工業監控、金融交易、氣象監測等眾多領域。這些按時間順序記錄的數據蘊含著豐富的信息&#xff0c;對其進行準確預測&#xff0c;能夠為企業和組織的決策提供有力支持&#xff0c;帶…

elementUI中MessageBox.confirm()默認不聚焦問題處理

在項目中使用elementUI的MessageBox.confirm()出現了默認不聚焦的問題&#xff0c;默認確認按鈕是淺色的&#xff0c;需要點擊一下才會變成正常。面對這種問題&#xff0c;創建新組件&#xff0c;實現聚焦。替換默認的MessageBox.confirm() 解決 創建components/MessageBoxCo…

yarn的定義

YARN 即 Yet Another Resource Negotiator&#xff0c;它是 Apache Hadoop 2.x 及后續版本中的集群資源管理系統&#xff0c;也是 Hadoop 生態系統的核心組件之一。 YARN 的誕生是為了解決 Hadoop 1.x 中 MapReduce 框架將資源管理和作業調度任務耦合在一起所帶來的可擴展性差等…

http、https、TLS、證書原理理解,對稱加密到非對稱加密問題,以及對應的大致流程

http 超文本傳輸協議 存在問題&#xff1a; 安全性、隱私性、數據完整性 易被中間人&#xff08;黑客之類的&#xff09;對數據進行劫持、篡改、隱私泄露 引出了 https &#xff08;source&#xff09; http 在網絡模型中的應用層 Application > transport > inter…

深度補全網絡:如CSPN++填補稀疏點云的深度信息

深度補全網絡&#xff1a;CSPN填補稀疏點云的深度信息 深度補全(Depth Completion)是計算機視覺中的一個重要任務&#xff0c;旨在從稀疏的深度測量中恢復密集的深度圖。CSPN(Convolutional Spatial Propagation Network)是這一領域的前沿方法之一。 CSPN概述 CSPN是對原始CSPN…

QT網絡拓撲圖繪制實驗

前言 在網絡通訊中&#xff0c;我qt常用的是TCP或者UDP協議&#xff0c;就比方說TCP吧&#xff0c;一臺服務器有時可能會和多臺客戶端相連接&#xff0c;我之前都是處理單鏈接情況&#xff0c;最近研究圖結構的時候&#xff0c;突然就想到了這個問題。那么如何解決這個問題呢&…

DNS主從同步實驗

dns域名解析原理 實驗步驟1、主dns要完成dns解析&#xff1a;192.168.21.128 [rootlocalhost ~]# yum install bind -y [rootlocalhost ~]# systemctl start named [rootlocalhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; direct…

知識了解03——怎么解決使用npm包下載慢的問題?

1、為什么使用npm下載包會下載的慢 因為使用npm下載包時&#xff0c;默認使用國外服務器進行下載&#xff0c;此時的網絡傳輸需要經過漫長的海底電纜&#xff0c;因此下載速度會變慢 2、怎么解決&#xff1f;&#xff08;切換鏡像源&#xff09; &#xff08;1&#xff09;方…

在Ubuntu系統中安裝和升級RabbitVCS

在Ubuntu系統中安裝和升級RabbitVCS 目前在ubuntu中使用svn的GUI工具&#xff0c;已經安裝了。想升級一下。 當前遇到的問題是&#xff0c;我想用它看看我當前的代碼對應的版本號&#xff0c;然后再決定是否update。但是&#xff0c;好像我看不出來。根本不如在windows使用To…

cv::dnn::NMSBoxes和nms-free的比較

1. 原理與目標 cv::dnn::NMSBoxes 基于傳統的非極大值抑制&#xff08;NMS&#xff09;算法&#xff0c;通過交并比&#xff08;IoU&#xff09;篩選重疊框&#xff0c;保留置信度最高的框&#xff0c;抑制冗余檢測。支持變體如 Soft-NMS&#xff08;通過降低分數而非直接抑制&…

React-useImperativeHandle (forwardRef)

我們會遇到這樣的場景&#xff1a;某個組件想要暴露一些方法&#xff0c;來供外部組件來調用。例如我們在開發form表單的時候&#xff0c;就需要把設置表單值、重置值、提交等方法暴露給外部使用。會有如下代碼&#xff1a; import { forwardRef } from react;const Form for…

多人五子棋聯機對戰平臺 測試報告

目錄 項目介紹 測試用例設計 部分功能測試示例 自動化測試 測試范圍 排除范圍 自動化測試目錄?編輯 執行全部自動化測試用例 性能說明 總結 性能測試 結果分析 測試總結 項目介紹 該項目基于WebSocket實現實時通信&#xff0c;采用SSM框架構建在線五子棋多人聯機…

JAVAEE(網絡原理—UDP報頭結構)

我們本篇文章要講的是UDP的報頭結構以及注意事項。 下面呢&#xff0c;我先說一下UDP是什么&#xff1f; 1.UDP是什么&#xff1f; UDP是一種網絡協議。網絡協議是計算機網絡中&#xff0c;為了使不同設備之間能夠準確、高效地進行數據交換和通信&#xff0c;而預先制定的一…

STM32學習筆記匯總

所有學習資料均參考b站江科大&#xff0c;和鐵山羊 一.創建工程&#xff08;比較麻煩&#xff0c;而且時間長了就容易忘記&#xff09; 二.點燈大師&#xff08;成功的第一步&#xff09; 三.不同的燒錄器使用&#xff08;Jlink-stlink&#xff09;

【MySQL】SQL語句在MySQL中的執行過程?主要存儲引擎區別?

MySQL SQL語句執行過程詳解 作為面試官&#xff0c;我來詳細剖析一條SQL語句在MySQL中的完整執行過程&#xff0c;這是每個后端開發者都應該掌握的核心知識。 一、連接階段 建立連接 客戶端通過TCP/IP協議與MySQL服務器建立連接(默認3306端口)服務器驗證用戶名、密碼和權限…

【記錄】服務器安裝ffmpeg

前言 因為項目中需要用到 ffmpeg 進行圖像的一些操作,本文記錄下在服務器安裝 ffmpeg 的全過程,還是具有一定挑戰性的。 系統詳情 本文使用的操作系統詳情如下 通過 命令 cat /etc/os-release 獲取 雖然操作系統為 Rocky Linux,但安裝過程是通用的,因為本文記錄的是從源代碼…