git commit失败的原因(以非零值退出)

时间:2018-11-01 23:52:04

标签: bash git

除了没有暂存文件进行提交的情况之外,还有其他原因导致git commit命令以非零退出的情况吗?我没有显示任何错误,我只是在编写这样的脚本:

#!/usr/bin/env bash

git commit -m "foo" || {
  echo "could not create new commit, no big deal"
}

## keep going with muh script

基本上,我想知道是否有退出代码或检查以防万一阻止提交的问题严重到足以停止我的脚本的情况。

1 个答案:

答案 0 :(得分:2)

当索引具有未合并的文件时,除了the case Tim Biegeleisen mentioned in a comment-git commit之外,git commit在许多其他情况下也会失败:

  • 预提交挂钩退出非零值,从而中止提交。 (用户可以使用--no-verify跳过预提交钩子,但是您的脚本不使用--no-verify。)

  • 发生其他错误的情况,例如,由于某种原因,整个文件系统变为只读状态(例如,Linux在某些硬件故障时会将文件系统冻结为只读状态)。

  • 提交实际上成功了,但是提交后钩子退出了非零值:如果存在提交后钩子,则其退出状态变为git commit的退出状态。 (这可以说是Git中的一个错误,因为文档声称提交后的钩子不会影响git commit的结果。结果在这里是否仅表示生成的提交? ,还是应该包含命令的退出状态?)