什麼是 Pre-commit Hook
Git pre-commit hook 是一種本地腳本,在跑 git commit 命令時會自動執行。這些 hook 可以用來確保程式碼品質,例如 run test、TypeScript 型別檢查、執行 ES Lint 等等,確保只有合格的程式碼才能被提交。
Local Hook 的好處
- 只影響 local,不會干擾其他團隊成員 → 以我們團隊來說,因為每個人電腦規格不同,如果大家 commit 前都需要跑過一次測試可能會很沒有效率,所以我選擇只寫在自己的 local 上
- 不需要修改專案的 package.json
- 不會被提交到版本庫
- 可以根據個人需求自定義檢查內容
設置步驟
1. 建立 hooks 目錄
|
|
2. 建立 pre-commit 檔案
|
|
3. 編寫 pre-commit 腳本
將以下內容寫入 .git/hooks/pre-commit
檔案:
|
|
4. 設定執行權限
|
|
測試與使用
建立一個測試 commit:
|
|
如果設置正確,執行後就會看到測試與 TypeScript 型別檢查完後才會真的 commit 成功。
如果需要臨時跳過 hook 檢查:
|
|
Q&A
如果我設定了這個 pre-commit 的內容,是不是連後端專案的 commit 都會跑過這個 pre-commit?
pre-commit hook 是儲存在每個 Git 儲存庫的 .git/hooks
目錄中,只對該特定儲存庫有效。
所以說,我們在哪個專案中設定的 pre-commit hook:
- 只會在對這個專案進行 commit 時執行
- 不會影響電腦上的其他專案(如後端專案)
- 每個 Git 儲存庫都有自己獨立的 hooks 設定