我像这样设置了一个 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/