Share This Post

前言:

現今軟體功能複雜與龐大,在開發過程中,不管單人開發還是多人協作,對所編寫的代碼與代碼版本管控都是必須的,其中,大多人採用Git來解決以下幾點問題:

  • 代碼遺失風險
  • 多人合作同時編輯專案
  • 版本管理複雜
  • 等等…

Git是什麼?

git是用於Linux核心開發的版本控制工具。 與CVS、Subversion一類的集中式版本控制工具不同,它採用了分散式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。git的速度很快,這對於諸如Linux核心這樣的大專案來說自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。

source: https://zh.wikipedia.org/wiki/Git

Git提供了切分支與主幹的方式,在多功能開發時,避免互相衝突,現在也有很多工具,強化了Git的狀態顯示,如下圖:

圖片來源:VSCode Git Graph 套件

圖片來源:VSCode Git Graph 套件

不過,現在開發人員不只追求在專案架構與代碼內容可讀性之外,對於版本控制的內容,如果沒有一個規範,有可能會造成:

  • 提交PR給他人Review,需花時間理解
  • 不同習慣的 commit,造成資訊雜亂
  • 專案換不同人接手後,要花大量時間閱讀

在其他地方也有討論

commit message 是开发的日常操作, 写好 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是实际工作中却常常被大家忽略.

source: https://juejin.cn/post/6844903606815064077

因此,如何規範一套Git commit規則,也是大多團隊都會面臨的問題,討論出規範後,再藉由工具的輔助,在日後的提交中,也省去花費時間思考查看提交的規範。


🛠️ git cz:

替代原本git commit命令改用git cz方式提交,並可以透過它提供的adapter自定義提交規範(預設為Angular的開發提交範例),當提交輸入對應內容完成後,會自動幫忙產生commit message。

安裝Node:


再來依照個人或團隊需求,選擇全局(全部有綁git專案)或針對一個專案局部設定規範,以下以全域安裝為主

安裝git cz:

npm install -g git-cz

使用效果

Untitled

自訂義規範

  • Mac系統的部分在根目錄下建立changelog.config.js檔案,將以下貼進去就可以了(?不確定沒有試過
  • windows 是需要在user底下新增此檔案
module.exports = {
  disableEmoji: false, // 是否禁用 emoji
  format: '{type}{scope}: {emoji}{subject}', // Commit 訊息的格式
  list: ['test', 'feat', 'fix', 'WIP', 'docs', 'refactor', 'style', 'chore', 'revert'], // Commit 類型的清單
  maxMessageLength: 64, // Commit 訊息的最大長度
  minMessageLength: 3, // Commit 訊息的最小長度
  questions: ['type', 'scope', 'subject', 'body', 'breaking', 'issues', 'lerna'], // 問題的清單
  scopes: [], // Commit 範圍的清單
  types: { // Commit 類型的清單
    WIP: {
      value: 'WIP',
      description : '暫存工作。',
	  emoji: "💪"
    },
    chore: {
      description: '修改建置流程、包管理、構建過程或輔助工具的變動。不包含修改測試檔、src 裡的檔案。',
      emoji: '🗯',
      value: 'chore'
    },
    docs: {
      description: '修改文件。',
      emoji: '📚',
      value: 'docs'
    },
    feat: {
      description: '新增功能。',
      emoji: '✨',
      value: 'feat'
    },
    fix: {
      description: '修復 bug。',
      emoji: '🐛',
      value: 'fix'
    },
    revert: {
      description: '撤銷、復原一次 git commit。',
      emoji: '⏪',
      value: 'revert'
    },
    refactor: {
      description: '重構、優化程式碼,不是新功能或是修復 bug。',
      emoji: '🛠',
      value: 'refactor'
    },
    
    style: {
      description: '修改程式碼的風格,不會對產品有任何的功能變動 (空白鍵、格式化、分號...等)。',
      emoji: '💅',
      value: 'style'
    },
    test: {
      description: '新增或修改現有的測試',
      emoji: '🏁',
      value: 'test'
    },
  },
  messages: {  // Commit 的提示訊息描述

	type: '<type> 用於說明 commit 的類別,只允許使用下面 9 個標識: \\n',
    customScope: '<scope> 自定義影響範圍,請精簡扼要但不失原意: \\n',
    subject: '<subject> 目的的簡短描述,不超過 100 個字符: \\n',
    body: '<body> 對本次 commit 的詳細描述,使用第一人稱,應該說明代碼變動的動機,以及與以前行為的對比,可以使用 "|" 分成多行 (可選):\\n',
    breaking: '<breaking> 對破壞性變動(Breaking Change)的描述、以及變動理由和遷移方法 (可選):\\n',
    footer: '<footer> 針對的 issue,像是:#520, #1314 (可選):\\n',
    confirmCommit: '<confirm commit> 請確認以上描述。',
  },
};

windows系統需要多下以下指令

npm install -g commitizen
npm install --save-dev git-cz

並下指令

echo '{ "path": "git-cz" }' > ~/.czrc

接下來對檔案下以下指令就可以了

git add .
git cz

windows系統中 可能會出現以下錯誤

$ git cz
The config file at "C:\\Users\\USER\\.czrc" contains invalid charset, expect utf8

那需要到目錄下將 .czrc 這個檔案刪除,建立新檔案貼上以下內容

{ "path": "git-cz" }

使用效果

Untitled

選擇後逐步填寫資訊

Untitled

push 後github上顯示內容如下

Untitled
Untitled

參考資料

  • Git cz相關

訂閱研究文章

Get updates and learn from the best

More To Explore

Scroll to Top

hurry up !

軟體工程師培訓

限時免費報名中

藉由與「真實世界軟體專案」相同的技術、工具與開發流程,化簡成與商業機密無關、門檻較低更容易上手的「模擬專案」,讓你有機會在職場前輩的陪伴下,完成真槍實彈的練習,動手解決真實的問題,快速累積個人的經驗與作品,而不只是「學習技術」而已。