git add - 当存在被忽略的文件时,我能强制让其退出代码为0吗?

3

主要问题

推送自上次提交和推送以来的所有本地更改是在使用git时非常频繁使用的操作,因此将其使用优化为一个命令可能是有益的,该命令的脚本如下:

git add * && git commit -m "my-message" && git push

但是在我尝试使用该方法时,它却失败了。经过一番搜索,我发现当存在被忽略的文件时,git add * 命令会返回 1(通过 echo $? 命令可以获得这个结果)。通常情况下,这不会对接下来输入的命令产生影响,但是在一个脚本中,能够自动决定是否继续非常重要。显然解决这个问题的方法就是简单地使用

git add * || git commit -m "my-message" && git push

但我希望避免这种情况,因为即使在git add发生实际错误时,它仍会继续执行。

是否有配置选项(或其他解决方案),可以让git在添加被忽略文件但没有发生其他错误时报告退出代码0

备注

  • 我知道自动化这个不是时间使用得很明智的方式,这不是目的。
  • 这只是失败的代码的最简化版本,实际脚本不使用硬编码提交消息。

1
git add * 为什么不用 -A?这是因为 * 可以检查是否有任何修改,如果有,则添加文件... 没有任何配置选项可以做到这一点。请参考 https://dev59.com/HW865IYBdhLWcg3wTc3h。 - KamilCuk
1个回答

4
这是由于Bash将*扩展为当前目录中的所有非隐藏文件(默认情况下),并将其作为单独的参数传递给git add。由于一些明确命名的文件被忽略了,git会报错,因此该命令存在歧义。 git add .基本上会执行相同的操作,唯一的例外是添加点文件,并且即使当前目录包含忽略的文件,也将返回退出代码0。

我最终使用了git add -A(如评论中所建议的),因为这是最干净的解决方案,但这个答案澄清了选项之间的差异。 - sisisisi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接