上一個項目用的svn,新項目用了git,很開心,終於學習了git了,本以為把git都學會了,但是還是遇到了一個不在自己學習的知識點范圍內的問題,最后是同事幫忙解決的。
問題:第一次代碼commit的時候,總是報錯,看了下報錯信息,貌似是在commit之前會檢查一下代碼錯誤,可是代碼沒有什么錯誤啊,能運行起來,難道eslint檢查的錯誤也會被檢查出來,然后commit失敗嗎?最后在網上找到了解決方案。
首先認識一下git的鈎子:
鈎子都被存儲在 git 目錄下的 hooks 子目錄中。 也即絕大部分項目中的 .git/hooks 。 當用 git init 初始化一個新版本庫時,git 默認會在這個目錄中放置一些示例腳本。這些腳本除了本身可以被調用外,它們還透露了被觸發時所傳入的參數。 所有的示例都是 shell 腳本,其中一些還混雜了 Perl 代碼,不過,任何正確命名的可執行腳本都可以正常使用
GIT_DIR/hooks/pre-commit :
這個鈎子被 git commit 命令調用, 而且可以通過在命令中添加--no-verify 參數來跳過。這個鈎子不需要參數,在得到提交消息和開始提交前被調用。如果鈎子返回值不是0,那么 git commit 命令就會中止執行。
譯注:這個鈎子可以用來在提交前檢查代碼錯誤(例如運行lint程序)。
當默認的pre-commit鈎子被啟用時,如果它發現文件尾部有空白行,那么就會中止此次提交。