bash - git add - 当唯一的错误是存在被忽略的文件时,我可以强制退出代码 0 吗?
问题描述
主要问题
推送自上次提交以来的所有本地更改,并且推送是使用 git 时非常常用的操作,因此将其使用优化为一个命令可能是有益的,该命令将以这样的脚本作为其主干:
git add * && git commit -m "my-message" && git push
但是由于某种原因,这在我尝试使用它的 repo 中失败了。经过一番搜索,我发现echo $?
当存在被忽略的文件时使用它会git add *
返回 1。这通常不是问题,因为它不会影响输入下一个命令,但在脚本中,能够自动决定是否继续是至关重要的。这个问题的明显解决方法是简单地使用
git add * || git commit -m "my-message" && git push
但我想避免这种情况,因为即使实际错误发生在git add
.
当添加命令中包含被忽略的文件但没有发生其他错误时,是否有配置选项(或任何其他解决方案)使 git报告退出代码为 0?
附言
- 我知道自动化这不是非常明智地使用时间,这不是目的。
- 这只是失败代码的最简化版本,实际脚本不使用硬编码提交消息。
解决方案
这是由于*
被 Bash 扩展为当前目录中的所有非隐藏文件(默认情况下)并作为单独的参数传递给git add
. git
抱怨是因为其中一些明确命名的(据git
我所知)文件被忽略了,所以命令是模棱两可的。
git add .
将做基本相同的事情,唯一的例外是添加点文件,即使当前目录包含被忽略的文件,也会返回退出代码 0。