日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git 只commit不push 会有影响吗_规范化团队 git 提交信息

發(fā)布時間:2024/1/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git 只commit不push 会有影响吗_规范化团队 git 提交信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

規(guī)范化團隊 git 提交信息

同一個工程項目,為了方便管理,git 的 commit 信息最好按照一定的格式規(guī)范,以便在需要的時候方便使用。什么是方便的時候,比如出現(xiàn)了一個線上 bug,所以需要回滾操作,知道了提交信息可以方便的定位問題。代碼 review 的時候也知道了該次 commit 干了什么,所以 commit 標準化好處很多,不再舉例。

實現(xiàn)

可以馬上想到的是利用 shell 結(jié)合 git hook 實現(xiàn)在 git commit 階段檢查輸入是否符合規(guī)范。符合就通過,不符合就終止,并給出提示信息。

規(guī)范是什么

常見的分類有下面幾種:

  • build:修改項目的的構(gòu)建系統(tǒng)(xcodebuild、webpack、glup等)的提交
  • ci:修改項目的持續(xù)集成流程(Kenkins、Travis等)的提交
  • chore:構(gòu)建過程或輔助工具的變化
  • docs:文檔提交(documents)
  • feat:新增功能(feature)
  • fix:修復(fù) bug
  • pref:性能、體驗相關(guān)的提交
  • refactor:代碼重構(gòu)
  • revert:回滾某個更早的提交
  • style:不影響程序邏輯的代碼修改、主要是樣式方面的優(yōu)化、修改
  • test:測試相關(guān)的開發(fā)

輪子

在 github 上有 commitlint 這個項目,它可以很方便的在工程中做配置,并允許你自定義上面說的「規(guī)范」、「分類」。

commitlint:用于檢查提交信息 husky:hook 工具,用于 git-commit 和 git-push 階段。

怎么用?

  • 初始化一個 node 項目:npm init -y
  • 安裝所需依賴。npm install --save-dev @commitlint/config-conventional @commitlint/cli husky
  • 在工程根目錄下新建配置文件,名稱為 commitlint.config.js。
  • 在 commitlint.config.js 中添加配置信息
  • const types = ['build', 'ci', 'chore','docs', 'feat', 'fix', 'pref', 'refactor', 'revert', 'style', 'test'];typeEnum = {rules: {'type-enum': [2, 'always', types]},value: () => types}module.exports = {extends: ["@commitlint/config-conventional"],rules: {'type-case': [0],'type-empty': [0],'scope-empty': [0],'scope-case': [0],'subject-full-stop': [0, 'never'],'subject-case': [0, 'never'],'header-max-length': [0, 'always', 72],'type-enum': typeEnum.rules['type-enum']}};

    5. 在 package.json 文件中添加以下代碼,代碼層級跟 **devDependencies** 同級。

    "husky": {"hooks": {"pre-commit": "echo '哈嘍,小伙伴們,在這里可以做測試相關(guān)的邏輯哦,一般結(jié)合公司的 ci'","commit-msg": "commitlint -E HUSKY_GIT_PARAMS","pre-push": "echo 提交代碼前需要先進行單元測試 && 可以做測試相關(guān)"}}

    上面的流程配置完成,當(dāng)你在提交 commit 信息的輸入的內(nèi)容,如果不符合 <type>: <subject> 規(guī)則,會終止并給出提示信息。

    type 就是上面的種類;subject 就是需要提交的文字概括。比如:feature:增加搖一搖推薦酒店功能。

    小說明:如果某次提交想禁用 husky,可以添加參數(shù) --no-verify。git commit --no-verify -m "xxx"

    貼個效果圖

    commitlint

    流程說明

    安裝包 husky 的時候,會在目錄 .git/hooks/ 下生成一堆 shell 腳本,負責(zé) git 的 hook。

    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 這個配置告訴 git hooks,當(dāng)執(zhí)行 git commit -m 的時候觸發(fā) commit-msg 鉤子,并通知 husky,從而執(zhí)行 commitlint -E HUSKY_GIT_PARAMS,實際上執(zhí)行的是 ./node_modules/husky/bin/run.js,讀取 commitlint.config.js 里的配置,然后對我們 commit -m 里的字符串校驗,如不通過則輸出錯誤信息并終止。

    拓展篇

    git commit 的幾個鉤子,也暴露出來了,所以可以結(jié)合時機做一些額外的邏輯。

    • pre-commit:在 git commit 之前觸發(fā)
    • commit-msg:在編寫 commit 信息的時候觸發(fā)
    • pre-push:在 git push 之前觸發(fā)

    所以基于上述時機,可以根據(jù)項目特點做一些別的事情。比如 code lint、unit test 代碼覆蓋率檢測、changelog 自動生成、unit test 腳本等、也可以借此機會產(chǎn)生 lint 報表

    總結(jié)

    以上是生活随笔為你收集整理的git 只commit不push 会有影响吗_规范化团队 git 提交信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。