具有两个命令的Git别名(stash pop + merge)仅执行第一个命令.为什么?如何执行合并?

J. *_*uni 8 git git-stash git-alias

我设置了这样的git别名:

git config --global alias.popmerge '!git stash pop && git merge master'
Run Code Online (Sandbox Code Playgroud)

然后我叫它,像这样:

git popmerge
Run Code Online (Sandbox Code Playgroud)

执行" git stash pop ",但忽略" git merge master ".

如果我在" git popmerge " 之后运行" git merge master " ...它会按预期运行,执行合并.

我有其他具有长序列命令的别名......它们运行完美无缺.似乎" git stash pop "中的某些内容会使别名进程停止 ...是否有可能避免这种行为?怎么样?

谢谢.

seh*_*ehe 8

你有从stash pop检查退出代码吗?

&&意味着后续列表仅在exitcode为0(成功)时执行.

您可以通过使用;而不是使用来简单地忽略exitcode &&.


使用以下内容验证成功:

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

false && echo ok || echo fail   # echoes "fail"
Run Code Online (Sandbox Code Playgroud)