Git Hooks是Git在進行某些操作如commit、merge、push的前後會觸發執行script的機制,並可藉此做些自動化作業如程式碼linting、coding style檢查、comment格式檢查、執行測試等。
Git Hooks又分為client-side hooks及server-side hooks。client-side hooks為在client的操作如commit、merge、checkout會觸發,server-side hooks則是在push到遠端倉庫時會觸發。
Git Hooks為Git既有的功能,執行git init
初始化一個git repository時會產生.git/hooks
目錄(.git
目錄為隱藏檔)及副檔名為.sample
的各hooks script範例檔。script檔名為對應的hooks。
下面示範利用pre-commit
hook在commit前印出"Hello GitHooks pre-commit"訊息。
Git Hooks pre-commit 範例
pre-commit
為Git Hooks其中一種hooks,在執行git commit
前會被觸發。
在專案的.git/hooks
目錄把pre-commit.sample
的副檔名.sample
移除,並將內容修改如下並存檔。
pre-commit
#!/bin/sh
echo Hello Git Hooks pre-commit
exit 0
pre-commit
檔即為一份pre-commit hooks觸發時執行的shell script。
echo
命令用來將後方參數輸出到console。
exit 0
會讓commit繼續,若exit
後為非零值,例如exit 1
則會終止commit。
設定完pre-commit
script後,修改git專案內容然後執行git add .
,然後執行git commit
,提交時可看到在console會先印出"Hello GitHooks pre-commit"訊息。
~/../git-demo$ git commit -m "test"
Hello Git Hooks pre-commit
[main 34fe7da] test
1 file changed, 1 deletion(-)
沒有留言:
張貼留言