AdSense

網頁

2021/8/15

Git 什麼是Git Hooks?

Git Hooks是Git在進行某些操作如commit、merge、push的前後會觸發執行script的機制,並可藉此做些自動化作業如程式碼linting、coding style檢查、comment格式檢查、執行測試等。


Git Hooks又分為client-side hooksserver-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(-)


沒有留言:

AdSense