星標(biāo)公眾號(hào),讓嵌入式知識(shí) “投喂” 不停歇!
之前我們分享:常用的 Git 提交規(guī)范!,團(tuán)隊(duì)協(xié)同開發(fā)可能會(huì)強(qiáng)調(diào)git commit使用同一的格式。
同時(shí),在 Git Push 時(shí)對(duì) Commit 進(jìn)行檢查是確保團(tuán)隊(duì)規(guī)范執(zhí)行的關(guān)鍵環(huán)節(jié)。
實(shí)際工作中,可能會(huì)遇到需要修改git commit描述的情況,比如,有如下幾次提交

我們r(jià)evert掉第二次和第三次提交:

這兩條revert的提交可能過不了push檢查。此時(shí)如何修改這兩條commit的描述呢?
輸入如下指令啟動(dòng)交互式變基:
git rebase -i [startpoint]
[startpoint]可以是一個(gè)提交的哈希值或者是HEAD~n表示相對(duì)位置的表達(dá)式。
例如,如果我們想修改哪個(gè)提交,就可以啟動(dòng)交互式變基到哪個(gè)提交。如,我們想修改倒數(shù)第二個(gè)的提交信息,有兩種方法:
方法一:git rebase -i到倒數(shù)第三個(gè)提交:
git rebase -i 01743486d4b11231b6532729bc0b9ef9cc970bd8
方法二:可以運(yùn)行git rebase -i HEAD~2到倒數(shù)第二個(gè)提交。

把需要修改的commit從pick指令修改為reword指令,保存、退出。

就可以重新編輯:


修改最近一次提交的描述信息,有兩種方式:

我們可以在commit階段或者push階段創(chuàng)建校驗(yàn)鉤子。
接著常用的 Git 提交規(guī)范!這篇文章里的git commit模板:

對(duì)應(yīng)的.git/hooks/commit-msg校驗(yàn)邏輯設(shè)計(jì)為:

#!/usr/bin/env python3
import re
import sys
def validate_commit_message(msg):
# 檢查第一行格式
first_line = msg.split('\n')[0]
if not re.match(r"^(feat|fix|refactor|test|chore|style|docs): .+", first_line):
return"第一行格式錯(cuò)誤!應(yīng)為:<類型>: 主題"
# 檢查必填字段
required_fields = ["修改內(nèi)容:", "影響范圍:", "自測(cè)情況:", "相關(guān)鏈接:"]
for field in required_fields:
if field not in msg:
return f"缺少必填字段:{field}"
return None
if __name__ == "__main__":
commit_msg_file = sys.argv[1]
with open(commit_msg_file, 'r') as f:
msg = f.read()
error = validate_commit_message(msg)
if error:
print(f"COMMIT MESSAGE ERROR: {error}")
print("提交格式應(yīng)為:")
print("<類型>: 主題")
print("修改內(nèi)容:...")
print("影響范圍:...")
print("自測(cè)情況:...")
print("相關(guān)鏈接:...")
sys.exit(1)
設(shè)置執(zhí)行權(quán)限:
chmod +x .git/hooks/commit-msg



猜你喜歡:
單例模式:嵌入式全局狀態(tài)一致性的守護(hù)者
嵌入式編程模型 | 觀察者模式
嵌入式應(yīng)用中,有哪些好用的壓縮庫?
嵌入式編程模型 | 抽象工廠模式
嵌入式編程模型 | 簡(jiǎn)單工廠模式
嵌入式領(lǐng)域:Linux 與 RTOS 的巔峰對(duì)決!
嵌入式軟件進(jìn)階指南,一起來進(jìn)階!