Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在编写一个预提交脚本来查找添加到索引中的二进制文件。
在处理它时,我意识到如果我添加一个二进制文件,然后进行提交,脚本将取消暂存它(将索引留空)但提交将继续(除非我采取措施阻止它)。
这是预期的行为吗?
我想知道的是为什么“git commit”默认禁止在索引为空的情况下继续进行,但是在钩子脚本中会完成提交。
作为记录,我有一个解决方法来避免在索引为空的情况下进行提交。
我希望有人可以解释为什么提交完成。
如果您使用该标志, Git确实允许空提交。--allow-empty
--allow-empty
所以,这里发生的是 git 开始提交并检查“是空的”(这需要添加--allow-empty)并且它不是空的。所以 git 运行你的钩子,它清空了提交,但是你已经通过了“非空”测试,这个测试不再重复——在这种情况下,由钩子退出非零。