/dev/null echo "Git updated. R-6ren">
gpt4 book ai didi

git - Bash:如何捕获 git 命令失败?

转载 作者:太空狗 更新时间:2023-10-29 13:52:56 24 4
gpt4 key购买 nike

我有一个命令:

...
{
git filter-branch -f --env-filter "$ENVFILTER" >/dev/null
echo "Git updated. Run 'git push -f BRANCH_NAME' to push your changes."
} || {
echo "Git failed. Please make sure you run this on a clean working directory." // this doesn't ever get called
}

快乐路径有效,但它看起来不像 || 曾经被执行过。这是失败的样子:

[~/Documents/my-repo]$ my-custom-command                                                                           
WARNING: Ref 'refs/heads/master' is unchanged
Git updated. Run 'git push -f BRANCH_NAME' to push your changes.
[

有没有办法捕获该错误?我不介意,即使它只是匹配 WARNING: Ref 'refs/heads/master' is unchanged string that gets printed out (我想顺便 stash 一下)

最佳答案

git 之后的echo 命令无论如何都会被执行,这是第一个问题。第二个问题是这个 echo 命令更新错误代码:第一个错误代码被覆盖。

我建议采用“经典”方法(可能有点过时,我是用 ksh 长大的):

git filter-branch -f --env-filter "$ENVFILTER" >/dev/null
if [ $? = 0 ] ; then
echo "Git updated. Run 'git push -f BRANCH_NAME' to push your changes."
else
echo "Git failed. Please make sure you run this on a clean working directory."
fi

稍微偏离主题:MS-DOS/Windows 用户会对此感到惊讶,因为在 Windows 中,echo 不会更改 ERRORLEVEL

关于git - Bash:如何捕获 git 命令失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com