[git] 已經(jīng)push的commit如何修改message

背景

在使用git提交代碼的時(shí)候,可能會(huì)出現(xiàn)message寫(xiě)錯(cuò)的情況,
如果此時(shí)commit已經(jīng)push到遠(yuǎn)程服務(wù)器了贰盗,
修改起來(lái)就比較麻煩了筒繁。

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

命令

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

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

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

步驟

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

$ git log

如圖,提交記錄會(huì)按時(shí)間倒序展示恢总,


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

$ git rebase -i HEAD~5

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

我們看到上面顯示了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蓄拣,
其它地方保持不變(此時(shí)還不用修改message)扬虚。

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

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

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

保存完了之后辜昵,git的分支就會(huì)發(fā)生改變,
從原來(lái)的master改成了我們第一個(gè)edit的commit id咽斧,

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

下面我們?cè)谶@個(gè)commit id所示的分支上堪置,執(zhí)行躬存,

$ git commit --amend

此時(shí)就可以修改message了,我們可以改成2a舀锨,

2a

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

對(duì)修改進(jìn)行保存岭洲,然后執(zhí)行,

$ git rebase --continue

現(xiàn)在分支號(hào)又發(fā)生了改變坎匿,表示我們要對(duì)第二個(gè)標(biāo)記為edit的commit進(jìn)行修改盾剩,
值得注意的是,這里的分支號(hào)和需要edit的commit id并不相同替蔬。

$ test-rebase git:(be83ef5) >

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

我們標(biāo)記了幾個(gè)edit快毛,這個(gè)過(guò)程就需要重復(fù)執(zhí)行幾次格嗅。
全部修改完成后,會(huì)提示唠帝,

> Successfully rebased and updated refs/heads/master.

4. 使用git push -f強(qiáng)制更新遠(yuǎn)程服務(wù)器

$ git push -f

切記一定要加-f屯掖,否則我們edit的commit會(huì)添加到commit后面,
而不是更新原commit襟衰。

更新完之后贴铜,我們來(lái)看看git log

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


參考

Git Branching - Rebasing

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绍坝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子苔悦,更是在濱河造成了極大的恐慌轩褐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玖详,死亡現(xiàn)場(chǎng)離奇詭異把介,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)蟋座,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)拗踢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人向臀,你說(shuō)我怎么就攤上這事巢墅。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵砂缩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我三娩,道長(zhǎng)庵芭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任雀监,我火速辦了婚禮双吆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘会前。我一直安慰自己好乐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布瓦宜。 她就那樣靜靜地躺著蔚万,像睡著了一般。 火紅的嫁衣襯著肌膚如雪临庇。 梳的紋絲不亂的頭發(fā)上反璃,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音假夺,去河邊找鬼淮蜈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛已卷,可吹牛的內(nèi)容都是我干的梧田。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼侧蘸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼裁眯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起讳癌,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤未状,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后析桥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體司草,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年泡仗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了埋虹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娩怎,死狀恐怖搔课,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情截亦,我是刑警寧澤爬泥,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布柬讨,位于F島的核電站,受9級(jí)特大地震影響袍啡,放射性物質(zhì)發(fā)生泄漏踩官。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一境输、第九天 我趴在偏房一處隱蔽的房頂上張望蔗牡。 院中可真熱鬧,春花似錦嗅剖、人聲如沸辩越。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)黔攒。三九已至,卻和暖如春强缘,著一層夾襖步出監(jiān)牢的瞬間亏钩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工欺旧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姑丑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓辞友,卻偏偏與公主長(zhǎng)得像栅哀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子称龙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Git是目前最流行的版本管理系統(tǒng)留拾,也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,707評(píng)論 1 17
  • 朋友整理的,放這里偶爾過(guò)來(lái)看看 一鲫尊、基本介紹 首先痴柔,Git作為版本控制系統(tǒng),他的原理與SVN為首的集中式版本控制系...
    allenzhan閱讀 1,002評(píng)論 0 3
  • 今天進(jìn)入基金投資的第二課,咱們來(lái)說(shuō)說(shuō)基金投資是神馬搔驼?還記得第一次看基金投資相關(guān)書(shū)籍的時(shí)候谈火,基本上每本書(shū)都是統(tǒng)一的格...
    昕葉閱讀 452評(píng)論 6 11
  • 一是認(rèn)真檢查,排除隱患舌涨。重點(diǎn)做好團(tuán)結(jié)西干渠糯耍、團(tuán)結(jié)東干渠、東風(fēng)一排支等5條排水渠道的隱患排除,共梳理汛期隱患...
    成安縣委辦公室閱讀 143評(píng)論 0 0
  • 文|拉撒他 “長(zhǎng)并且艱苦的跑步是理想的抗抑郁病的藥温技,因?yàn)橥瑫r(shí)跑步和為自己感到抱歉是很難的革为。還有,跑步會(huì)有一段時(shí)間頭...
    拉撒他閱讀 576評(píng)論 1 7