2010-08-20 54 views
4

有時候,當有未跟蹤文件時禁止git commit是有意義的,因爲你應該將它們添加到要提交的文件或gitignore中。而像-f這樣的選項強制這個提交也是必要的。那麼有沒有選項/插件/等來做到這一點?非常感謝你。如何禁止git提交如果有未跟蹤的文件?

回答

5

如果您發現未跟蹤的文件(您可以檢查輸出git status --porcelain -u以確定它們的存在 - 查找以「?」開頭的行),您可以添加pre-commit掛鉤,該掛鉤以非零值退出。然後,如果您不關心未跟蹤文件,則可以使用git commit --no-verify覆蓋提交驗證。

編輯:感謝@Jefromi;我沒有我的git環境來測試。他還指出,這個命令應該確定是否存在未傳輸的文件:git status -u | grep '^# Untracked files:$'

+0

我想你想檢查'git status --porn -u'的輸出,而不是'git status -u'。所有'-u'確實會確保未列出的文件將被列出,除非它在配置中被關閉,否則它們將是無論如何。 '--porcelain'就是使用腳本解析的簡單方法,用''''在行首開始,而不必讀取並找到「未記錄的文件」部分。該選項已添加到v1.6.4。 – Cascabel 2010-08-20 19:18:15

+0

當然,如果你只需要知道是否有未跟蹤的文件,只要執行'git status -u | grep'^#未記錄的文件:$'' – Cascabel 2010-08-20 19:19:07