2010-08-20 57 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