Git Commit最佳實(shí)踐,這才是使用Git Commit的正確方式
git commit是將變更提交到本地緩存中而存在的,同時(shí)在commit時(shí)需要附上描述信息,說(shuō)明本次提交是做了哪些變更,以便在今后追蹤代碼時(shí),通過(guò)描述信息就能讓讀者知道哪些地方變化了。
這是一把雙刃劍。用好了,能夠保持項(xiàng)目提交記錄清晰,起到追蹤信息的作用;反之,則會(huì)帶來(lái)更多的困擾。
下面我們就來(lái)看看應(yīng)該如何用好git commit。
好的Commit的特點(diǎn)
提交的變更要單一且聚焦
一次好的commit應(yīng)該是原子性的 - 即有且僅有一個(gè)邏輯的改變。請(qǐng)不要把多個(gè)相互獨(dú)立的變更一次性提交。
例如:好的提交:只增加了用戶驗(yàn)證就是一個(gè)單一的功能改變。
git commit -m "Add user authentication"
不好的提交:既增加了用戶驗(yàn)證,同時(shí)又更新了UI樣式
git commit -m "Add user authentication and update UI styles"
明確的描述信息
一個(gè)具體的描述能夠清晰的解釋該次commit做了什么,并且做了什么改動(dòng)。在用戶不用閱讀代碼的情況下,就能清晰的知道本次提交做了哪些改變。
好的提交:在用戶登錄功能中,修復(fù)了空指針導(dǎo)致的異常
git commit -m "Fix Correct null pointer exception in user login"
壞的提交:修復(fù)了一個(gè)bug。
git commit -m "Fix bug"
遵循統(tǒng)一的提交風(fēng)格
遵守統(tǒng)一的提交風(fēng)格,以保證在讀commit的時(shí)候格式統(tǒng)一、一致,以提高易讀性。一般遵循如下格式:
提交的類型+簡(jiǎn)短的描述
提交的類型一般包括:
- feat:新功能
- fix:修復(fù)bug
- chore:雜項(xiàng)
- refactor:代碼重構(gòu)
- style:代碼風(fēng)格變動(dòng)
- test:測(cè)試代碼變動(dòng)
- build:構(gòu)建代碼變動(dòng)
例如:在auth模塊中增加了基于JWT的驗(yàn)證的新功能。
git commit -m "feat(auth): add JWT-based authentication"
在login模塊中,修復(fù)了競(jìng)態(tài)條件的問題。
git commit -m "fix(login):resolve race condition in login flow"
上面括號(hào)中的auth和login說(shuō)明本次提交所作用的功能范圍。
經(jīng)過(guò)測(cè)試和驗(yàn)證的代碼
確保提交的代碼是經(jīng)過(guò)測(cè)試和驗(yàn)證過(guò)的代碼。提交未測(cè)試的代碼會(huì)影響整個(gè)代碼流程以及其他團(tuán)隊(duì)成員。
不好的Commit的特點(diǎn)
一次提交有大量變更且不聚焦
一次提交包含大量的修改是不好的commit。這會(huì)導(dǎo)致難以理解本次commit到底修改了什么。一次提交過(guò)多的修改,會(huì)對(duì)代碼review和調(diào)試造成困難。
例如:以下是對(duì)整個(gè)項(xiàng)目做了修改并一起提交了
git commit -m "Update project"
提交的描述模糊不清
提交的描述說(shuō)明模糊或?qū)Ρ敬胃拿枋霾磺?。這種描述信息缺乏細(xì)節(jié)且容易造成混亂,同時(shí),也使追蹤歷史變化變的更困難。
例如:以下沒有說(shuō)明具體的變更是什么。
git commit -m "Stuff"
一次提交中有不相關(guān)的變更
將無(wú)關(guān)的更改合并到一個(gè)提交中,難以區(qū)分特定的更改,還會(huì)引入錯(cuò)誤并使review過(guò)程變的復(fù)雜。
例如:以下把readme的修改和login模塊的修改混合在了一起
git commit -m "Update readme and fix login issue"
不完整或沒有經(jīng)過(guò)測(cè)試的代碼
提交不完整或未經(jīng)測(cè)試的代碼可能會(huì)讓工作流程混亂,給其他團(tuán)隊(duì)成員帶來(lái)困擾。
缺少上下文
在提交的說(shuō)明中,缺少必要的上下文信息,難以理解為什么要做出這次變更。
總結(jié)
良好的commit對(duì)于在Git中保持干凈和可理解的項(xiàng)目記錄非常重要。通過(guò)遵循最佳實(shí)踐,如保持提交的單一性、編寫描述性消息、確保是經(jīng)過(guò)測(cè)試的代碼等,好的commit可以改善團(tuán)隊(duì)協(xié)作,使項(xiàng)目具有高度的可維護(hù)性。
原文地址:https://dev.to/sheraz4194/good-commit-vs-bad-commit-best-practices-for-git-1plc?ref=dailydev