带有两个命令的 Git 别名(stash pop + merge)只执行第一个命令。为什么?如何执行 merge ?

标签 git git-stash git-alias

我像这样设置了一个 git 别名:

git config --global alias.popmerge '!git stash pop && git merge master'

然后我这样调用它:

git popmerge

git stash pop”被执行,但是“git merge master”被忽略。

如果我在“git popmerge”之后立即运行“git merge master”……它会按预期运行,执行 merge 。

我还有其他带有长命令序列的别名……而且它们运行完美。似乎git stash pop”中的某些东西使别名进程停止...是否有可能避免这种行为?怎么办?

谢谢。

最佳答案

您是否检查过 stash pop 的退出代码?

&& 意味着后续的 list 仅在 exitcode 为 0(成功)时执行。

您可以使用 ; 而不是 && 来忽略退出代码。


使用以下内容验证成功:

true  && echo ok || echo fail   # echoes "ok"

false && echo ok || echo fail   # echoes "fail"

关于带有两个命令的 Git 别名(stash pop + merge)只执行第一个命令。为什么?如何执行 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126804/

相关文章:

git - 右键单击上下文菜单中的 TortoiseGit 克隆选项不可用

git - 我们还需要使用远程命令来设置 github push ssh 访问吗?

git - 从 git 存储库克隆时出现 TLS 错误

git - 如何向 Git 中的存储添加更多更改

成功 merge 后,Github 仍然显示分支之间的差异

git - 为什么每个分支的 git stash 不是唯一的?

git - pull 是不可能的,因为你有未 merge 的文件,git stash 不起作用。不想犯

函数中的 Git 别名输出着色

linux - 在 Git 别名中转义 $num