如何使用 git commit template 與 git hooks 管理團隊的 git log為什麼需要規範團隊的 git log
在團隊開發中,我們常常會希望團隊遵循一個 git commit log 的規範,原因是我們希望在未來要查找之前的 log 時,可以透過這樣的方式可以很快的搜尋到想要的結果,也可以在 CI/CD 的流程中,透過規範的 git log 藉而產出一個有意義且能給 QA/PM/其他團隊成員觀看的 CHNAGELOG (版本更新內容)
如何管理與規範團隊的 git log
通常我們會規範一些 commit role 的文件 ,希望團隊成員能夠去遵守,但是在每次 commit 時,開發成員都需要去確保自己的commit log 是否符合規範,是一件稍嫌困擾的事情,而且我們也不能確保每位成員都真的『 完全 』遵守我們的 commit 規範,這時候我們就可以利用 commit template 跟 git hooks 去達到讓成員 commit 時可以完全按照團隊的 commit role 跟確保這個 commit 是否完全符合規範。
關於 git commit template
在 git 中,我們可以設置模板文件,那麼當你每次 commit 的時候, git 會默認使用該文件的內容,例如:你創建了一個 template 文件 $HOME/.gitmessage.txt :
接著我們設置 commit.template :
這樣子每次提交的時候,默認都會出現你設置的模板文件,在這邊可以透過這個文件,讓每個成員都能很快的遵守團隊的 commit role 。
關於 git hooks
git hooks 就像名字敘述一樣,當某些重要事件發生時,Git 有方法可以觸發自訂腳本, 在每個 Git repository 中都有一個 .git/hooks 目錄,裡面的內容大概像這樣:
applypatch-msg.sample pre-applypatch.sample pre-push.sample
commit-msg.sample pre-commit.sample pre-rebase.sample
post-update.sample prepare-commit-msg.sample update.sample- pre-commit
- prepare-commit-msg
- commit-msg
- post-commit
- post-checkout
- pre-rebase
上述為幾個較為有用的參考對應事件。完整的事件對應。
所以我們可以在每次commit之前,去檢查這次的 commit msg 是否符合我們的 commit role,透過 git hooks script 的用法,可以讓不符合規範的 commit msg 報錯,這樣在團隊中可以很有效的去規範團隊成員的 git msg。
這邊提供一個對應 Aangular Js 的 git hook script
當然, git hooks 還可以做到許多強大的功能,像是 lint 檢查,在 commit 前就運行單元測試,他本身就是一個非常強大的 git plugin ,在 CI/CD 的流程中,是非常有用的一個 git 功能,這次的介紹就到這邊。
參考 :