修改git历史提交的commit信息
本文是基于idea的操作,親測可用
前言:
很多公司都會自定義 Git - 使用強制策略,那么他的commit信息就會有固定的格式,一旦不是這個格式,就會出現(xiàn)push失敗
但是push失敗,很多也只在dev和master分支做強制限定,其他分支卻沒有限定(當然,我覺得這種做法有些弊端,應(yīng)該所有都限定才對,但我對這個強制限定沒研究過,暫且不說這個問題)
比如限定的是:所有commit都必須以ABC開頭,比如ABC-1,ABC-2
那么如果我們在其他分支開發(fā),已經(jīng)提交了很多次,其中有些沒有帶ABC,那么將來合并到dev的時候,commit會成功,但push就會失敗
這種情況,你全部回退已經(jīng)不可能了,只能修改git歷史提交的commit信息,在前面加上ABC
修改git歷史提交的commit信息
這個是用到了git的rebase命令,大致情況就是進入rebase模式,然后修改當初某條提交的commit信息,保存退出
下面說說詳細步驟:
1.找到你要改的那條commit消息,在version control欄里,從現(xiàn)在往回數(shù)數(shù),看是第幾條修改的
也可以在terminal欄里,命令行輸入 git log ,按回車一直往回找,總之就是找到你要改的那個是多少次以前修改的。
2.知道次數(shù)后,就開始進入rebase模式了,命令行輸入:git rebase -i HEAD~28
比如28就是你的次數(shù),這時你會看到一些信息,類似于:
pick XXX 你的某條commit信息
pick XXX 你的某條commit信息
pick XXX 你的某條commit信息
如果沒有找到你要改的commit信息,那就是第一步找錯了,:wq推出重新找
如果你第一步數(shù)對了,應(yīng)該里面有一條就是你要改的,那么將那條對應(yīng)前面的pick改成edit
這個可以理解成linux的vi語法,按i進入insert模式,修改完后etc,然后:wq保存退出
3.上一步只是說找到你要改的那條,并沒有真正改,此時命令行輸入:git commit --amend
然后你就會看到你要改的commit信息,然后把他改成你要的格式,還是:wq保存退出
4.改完了,push一下,就沒問題了。
push的時候,如果有沖突,accept theirs就行
相關(guān)參考:
1.自定義 Git - 使用強制策略的一個例子
https://git-scm.com/book/zh/v2/自定義-Git-使用強制策略的一個例子
2.修改 git 歷史提交 commit 信息(重寫歷史)
https://www.jianshu.com/p/0f1fbd50b4be
總結(jié)
以上是生活随笔為你收集整理的修改git历史提交的commit信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql分页查询报错,及解决
- 下一篇: GCD简介三:Dispatch Sour