電腦裝過
Git
後,就會有一個.gitconfig
檔案,裡面除了記載了你的基本資料外,也可以記載你的預設git template
路徑。
所謂預設的Git Template即以後新的新的專案Clone
下來後,都會套上這份git
設定。
而假若原本專案有使用Husky
,Husky
與Template
重疊的設定,Husky
會選擇不覆蓋。
打個比方,我們有pre-commit
,pre-push
兩份模板作為預設的git-hooks
。
git-clone
了一個新專案下來時,假設新專案本身有在使用Husky
,這專案的Husky
有commit-msg
和pre-push
兩份檔案。
那麼順序會是這樣運作:git-clone
下來時執行了git-init
因此會把git-template
搬一份過去專案底下,接著往後執行到Husky
(npm install
)時,重疊的檔案名就不會做任何動作,因此上面的情況來說pre-push
檔仍舊會是git-template
的。
我用這方法訂製了屬於我自己的個人化commit
規則,我用它來強迫我在每次push
前檢查我的commit
堆中有沒有任一fix/test/refactor
前綴的commit
,這前綴的故事請閱讀這篇,目的是希望自己不要不斷新功能(feat
),而忘了寫測試,重構,修復Bug,導致產品逐漸失去穩定度。
git-init
的專案都會遵循同樣規則。我藉此達到我自動化的一項實作,但要注意不得與團隊共識相違背,也因此我才去研究了Template的特性。
在一個自己滿意的地方建立一個資料夾,作為存放git-template
的資料夾
假設你的資料夾叫做.git-templates
,
接著我們去.gitconfig
檔上面加上一段,
即以後git init
時,會自動取這個路徑底下的資料作為預設檔。
接著我們回到剛剛那個git-template
的資料夾,在裡面建立一個hooks
資料夾,裡面存放我們想要做為預設的git-Hooks
檔案。
可以參考我的結構,我是放在User底下
往後clone專案,就可以得到屬於自己的git設定了。
不建議刪掉.git重新git init哦,該專案local history會全部消失,psuh上去重新clone會是比較好的作法。