半自動化版本控制與 git commit message 標準化流程

本篇記錄著自己身為軟/韌體工程師,透過 github 搭配 node.js script 進行語意化版本控制的流程。同時還標準化了 git commit message 以及自動發布以 markdown 語法撰寫的 change log 的整個從安裝到最終流程的完整步驟!

安裝 Node.js & Git

本例透過 Node.js 安裝及運行自動化套件,透過 Git 進行版本控制

以上皆選擇 default 設定不斷下一步安裝即可!

安裝套件

請打開終端機,Windows 步驟如下:

輸入以下指令安裝各個套件

1
npm install -g commitizen # 標準化 git commit message
1
npm install -g conventional-changelog-cli # 生成 change log 的套件
1
npm ls -g -depth=0 # 確認 npm 安裝的各個套件的 version

初始化要加入版本控制的專案

打開要加入版本控制的資料夾,在路徑顯示區輸入”cmd”以在該路徑打開終端機:

按順序輸入以下指令進行初始化

1
2
3
4
5
git init # 將資料夾加入 git control
git branch -M main # creat a branch
npm init -y # 創建一個 node.js 的 script doc. package.json 並 初始化之
npm init release-it # 初始化半自動更新版號套件
commitizen init cz-conventional-changelog --save --save-exact # 初始化生成 change log 的套件

init release-it 時若詢問是否要 “Publish a GitHub Release with every release”,請選擇不要
詢問 “Where to add the release-it config”,請選擇 package.json

接著在該資料夾找到 package.json 這個文件並打開他,預設的 version 是從 1.0.0 開始。
可以依據自己的專案需求,更改要開始的版號。
這是根據語意化版本進行的版號設定。

接著如下圖在 package.json 的 script 處加入以下的快速指令:

1
2
3
4
5
6
# 半自動生成語意化版本的指令
# 根據 commit message 生成 CHANGELOG.md 的指令
# 將 log 生成,git add --all,git commit,git push 四個指令結合成一個指令
"release": "release-it --no-npm.publish",
"log": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"git": "git push -u origin main && git push --tags && npm run log && git add . && git commit --allow-empty-message -m \" \" && git push -u origin main"

另外因為 release-it 這個套件需要搭配 remote github/gitlab 庫相依,因此請務必在 github/gitlab 創建一個 project 並且將此專案 remote 到相對應的 github/gitlab 倉

1
git remote add origin "github/gitlab專案網址"

每一次更新的操作流程

1
2
3
4
5
6
git add . # 將所有變動加入 Git 暫存
git status # 顯示所有加入暫存的變動,可有可無
git cz # 本來是 git commit,因為裝了 commitizen 標準化 commit message,故使用 git cz 進入
npm run release # 透過 node.js 指令執行 release-it --no-npm.publish 指令進行版號更新
# 詢問 commit,tag yes/no 時可以選擇 yes,但 push 請選擇 no,因後續還有 changelog 要生成,最後一步 push
npm run git # 透過 node.js 指令執行 log 生成,git add --all,git commit,git push 四個指令

✏以上就是本次的內容,
💡希望對正在閱讀的你也有幫助,若有誤的地方也歡迎指教。
❓若有什麼疑問歡迎下方留言,我會盡速回復您!


支持|不只是個工程師

如果這篇文章對你有幫助,請幫我
拍拍手|LikeCoin基金將會分發LikeCoin獎勵創作者
追蹤| Facebook & Instagram
也歡迎點我小額訂閱【不只是個工程師】

歡迎關注我的其它發布渠道