git 如何修改已經(jīng)push 的commit 的信息

背景

在使用git提交代碼的時候,可能會出現(xiàn)message寫錯的情況,
如果此時commit已經(jīng)push到遠程服務(wù)器了,
修改起來就比較麻煩了。

下面整理了一下,修改歷史中某幾次commit的message的通用辦法。

命令

以下修復(fù)方式中,總共涉及這些命令,

$ git log
$ git rebase -i HEAD~5
$ git commit --amend
$ git rebase --continue
$ git push -f

注:
在修復(fù)歷史commit message的時候,請確保當前分支是最新代碼,
且已經(jīng)提交了所有本地修改。

步驟

1. 使用git log命令查看歷史記錄

$ git log

如圖,提交記錄會按時間倒序展示,

image

2. 使用git rebase -i HEAD~5確定要修改哪些commit

$ git rebase -i HEAD~5

其中,HEAD~5表示最近的5個,后面的5可以改成其他數(shù)字。
本例中我們只顯示最近的5個。

image

我們看到上面顯示了5行,

pick 1d316b0 1
pick f429786 2
pick 880cfbc 3
pick c55cf56 4
pick d10fd07 5

左邊第一列表示命令(command),中間一列表示commit id,
最右邊一列是我們之前提交的message。

這里的展示順序,是按事件順序排列的。
即,第一行是最早提交的信息。

假設(shè)我們需要修改第2條和第4條commit的message,
則需要將它們的命令(command),由pick改為edit,
其它地方保持不變(此時還不用修改message)。

修改完成之后,保存修改。

pick 1d316b0 1
edit f429786 2  <- 注意本行第一列的pick改為edit了
pick 880cfbc 3
edit c55cf56 4  <- 注意本行第一列的pick改為edit了
pick d10fd07 5

image

3. 輪流使用git commit --amendgit rebase --continue修改每個edit的commit

保存完了之后,git的分支就會發(fā)生改變,
從原來的master改成了我們第一個edit的commit id,

$ test-rebase git:(master) >
$ test-rebase git:(f429786) >

下面我們在這個commit id所示的分支上,執(zhí)行,

$ git commit --amend

image

此時就可以修改message了,我們可以改成2a

2a

# Please enter the commit message for your changes. Lines starting
...

對修改進行保存,然后執(zhí)行,

$ git rebase --continue

現(xiàn)在分支號又發(fā)生了改變,表示我們要對第二個標記為edit的commit進行修改,
值得注意的是,這里的分支號和需要edit的commit id并不相同。

$ test-rebase git:(be83ef5) >

接著再重復(fù)上面的操作,
先用git commit --amend修改message,然后保存,
再執(zhí)行,git rebase --continue。

我們標記了幾個edit,這個過程就需要重復(fù)執(zhí)行幾次。
全部修改完成后,會提示,

> Successfully rebased and updated refs/heads/master.

4. 使用git push -f強制更新遠程服務(wù)器

$ git push -f

切記一定要加-f,否則我們edit的commit會添加到commit后面,
而不是更新原commit。

更新完之后,我們來看看git log。

image

第2條和第4條commit message已經(jīng)被我們成功修改了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 朋友整理的,放這里偶爾過來看看 一、基本介紹 首先,Git作為版本控制系統(tǒng),他的原理與SVN為首的集中式版本控制系...
    allenzhan閱讀 1,098評論 0 3
  • 背景 在使用git提交代碼的時候,可能會出現(xiàn)message寫錯的情況,如果此時commit已經(jīng)push到遠程服務(wù)器...
    何幻閱讀 34,312評論 0 21
  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當前所在目錄變成...
    冬絮閱讀 5,130評論 0 9
  • 以下筆記主要參考gitgot,大致了解git使用和原理。 第一部分我們從個人的視角去研究如何用好Git,并且揭示G...
    carolwhite閱讀 2,521評論 0 1
  • git 指南 git操作 本地操作 git add <file>暫存工作區(qū)的修改到暫存區(qū) git commit將暫...
    IrisZL閱讀 662評論 0 0

友情鏈接更多精彩內(nèi)容