我正在嘗試轉儲mysql數據庫,並使用預先提交的鉤子將該.sql轉儲文件添加到暫存區域,以便它可以包含在提交中(在Windows Server上2012 R2/IIS)。下面的代碼很好地轉儲數據庫,但是在我提交後它仍然在暫存區中顯示be.sql文件...有時候(?) - 它似乎是將文件添加到登臺後提交(?)。這是所以我不知道爲什麼可以添加文件提交後發生一個pre-commit鉤子:Git預提交鉤子在提交後添加文件
#!/bin/bash
# Dump Database
/c/Program\ Files\ \(x86\)/MySQL/MySQL\ Server\ 5\.7/bin/mysqldump.exe -u root --skip-extended-insert be > /c/inetpub/wwwroot/directory/be/be.sql
# Add Database
cd /c/inetpub/wwwroot/directory/be
git add be.sql
的行爲是有點怪 - 我會看到be.sql仍處於分期所以我會做出承諾。如果我以後再玩這個樹,那麼這棵樹很乾淨。如果我再次提交和git狀態,它將顯示修改後的暫存索引中的be.sql文件(我沒有修改它)。它來回走了。我只是希望它轉儲.sql文件,將.sql文件添加到分段索引,那麼每當分段索引乾淨時都要提交。任何想法,爲什麼會發生這將不勝感激。
嘗試在最後一行添加「exit 0」(在幾個「internet」示例中看到它) – barat
您的腳本中有一個「cd」,它將它從當前目錄移出 - 這在Git鉤子中有點棘手到一些*其他*目錄。但是,與此同時,您不會*覆蓋各種Git環境變量,這意味着由Git設置爲將Git指向特定存儲庫,索引文件和/或工作樹路徑的那些變量仍然可以將Git指向特定(並且現在潛在錯誤)這樣的文件。我不確定Git-for-Windows是否會做出奇怪而特殊的事情,而不是「正常」的Git,但是正常的Git會根據'git'和子命令之間的參數*來設置變量,再加上...... [cont'd] – torek
用'GIT_INDEX_FILE'設置運行* commit *鉤子(pre-commit,edit-commit-msg)。幸運的是,從Git 1.5.4版本開始,修改索引文件(staging區域)是明確允許在預提交鉤子中。但是,路徑可能是相對的,如果是這樣,並且您正在切換到其他位置,則需要對其進行調整。 – torek