Git pre-commit hook。空索引行为

时间:2013-11-11 09:56:09

标签: git githooks

我正在编写一个预提交脚本来查找添加到索引中的二进制文件。

在研究它时,我意识到如果我添加一个单独的二进制文件,然后执行提交,脚本将取消它(使索引为空)但提交将继续(除非我做了一些事情来阻止它)

这是预期的行为吗?

我想知道的是为什么“git commit”默认情况下,如果index为空,则禁止进行,但是在钩子脚本中,提交将完成。

为了记录,我有一个解决方法,以避免在index为空的情况下提交。

我希望有人可以解释提交的原因。

1 个答案:

答案 0 :(得分:1)

如果您使用--allow-empty标志,

Git 允许空提交。

所以,这里发生的是git启动提交并检查“是否为空”(这需要添加--allow-empty)并且它不是空的。所以git运行你的钩子,它清空了提交,但是你已经通过了“非空”测试,这个测试没有重复 - 在这种情况下,由钩子退出非零值。