git 只commit不push 会有影响吗_规范化团队 git 提交信息
規(guī)范化團(tuán)隊(duì) git 提交信息
同一個(gè)工程項(xiàng)目,為了方便管理,git 的 commit 信息最好按照一定的格式規(guī)范,以便在需要的時(shí)候方便使用。什么是方便的時(shí)候,比如出現(xiàn)了一個(gè)線上 bug,所以需要回滾操作,知道了提交信息可以方便的定位問題。代碼 review 的時(shí)候也知道了該次 commit 干了什么,所以 commit 標(biāo)準(zhǔn)化好處很多,不再舉例。實(shí)現(xiàn)
可以馬上想到的是利用 shell 結(jié)合 git hook 實(shí)現(xiàn)在 git commit 階段檢查輸入是否符合規(guī)范。符合就通過,不符合就終止,并給出提示信息。
規(guī)范是什么
常見的分類有下面幾種:
- build:修改項(xiàng)目的的構(gòu)建系統(tǒng)(xcodebuild、webpack、glup等)的提交
- ci:修改項(xiàng)目的持續(xù)集成流程(Kenkins、Travis等)的提交
- chore:構(gòu)建過程或輔助工具的變化
- docs:文檔提交(documents)
- feat:新增功能(feature)
- fix:修復(fù) bug
- pref:性能、體驗(yàn)相關(guān)的提交
- refactor:代碼重構(gòu)
- revert:回滾某個(gè)更早的提交
- style:不影響程序邏輯的代碼修改、主要是樣式方面的優(yōu)化、修改
- test:測(cè)試相關(guān)的開發(fā)
輪子
在 github 上有 commitlint 這個(gè)項(xiàng)目,它可以很方便的在工程中做配置,并允許你自定義上面說的「規(guī)范」、「分類」。
commitlint:用于檢查提交信息 husky:hook 工具,用于 git-commit 和 git-push 階段。
怎么用?
5. 在 package.json 文件中添加以下代碼,代碼層級(jí)跟 **devDependencies** 同級(jí)。
"husky": {"hooks": {"pre-commit": "echo '哈嘍,小伙伴們,在這里可以做測(cè)試相關(guān)的邏輯哦,一般結(jié)合公司的 ci'","commit-msg": "commitlint -E HUSKY_GIT_PARAMS","pre-push": "echo 提交代碼前需要先進(jìn)行單元測(cè)試 && 可以做測(cè)試相關(guān)"}}上面的流程配置完成,當(dāng)你在提交 commit 信息的輸入的內(nèi)容,如果不符合 <type>: <subject> 規(guī)則,會(huì)終止并給出提示信息。
type 就是上面的種類;subject 就是需要提交的文字概括。比如:feature:增加搖一搖推薦酒店功能。
小說明:如果某次提交想禁用 husky,可以添加參數(shù) --no-verify。git commit --no-verify -m "xxx"
貼個(gè)效果圖
commitlint流程說明
安裝包 husky 的時(shí)候,會(huì)在目錄 .git/hooks/ 下生成一堆 shell 腳本,負(fù)責(zé) git 的 hook。
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 這個(gè)配置告訴 git hooks,當(dāng)執(zhí)行 git commit -m 的時(shí)候觸發(fā) commit-msg 鉤子,并通知 husky,從而執(zhí)行 commitlint -E HUSKY_GIT_PARAMS,實(shí)際上執(zhí)行的是 ./node_modules/husky/bin/run.js,讀取 commitlint.config.js 里的配置,然后對(duì)我們 commit -m 里的字符串校驗(yàn),如不通過則輸出錯(cuò)誤信息并終止。
拓展篇
git commit 的幾個(gè)鉤子,也暴露出來了,所以可以結(jié)合時(shí)機(jī)做一些額外的邏輯。
- pre-commit:在 git commit 之前觸發(fā)
- commit-msg:在編寫 commit 信息的時(shí)候觸發(fā)
- pre-push:在 git push 之前觸發(fā)
所以基于上述時(shí)機(jī),可以根據(jù)項(xiàng)目特點(diǎn)做一些別的事情。比如 code lint、unit test 代碼覆蓋率檢測(cè)、changelog 自動(dòng)生成、unit test 腳本等、也可以借此機(jī)會(huì)產(chǎn)生 lint 報(bào)表
總結(jié)
以上是生活随笔為你收集整理的git 只commit不push 会有影响吗_规范化团队 git 提交信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js打印线程id_一文讲透“进程,线程和
- 下一篇: 工作日报模板_千份财会人通用工作模板:自