Git alias with two commands (stash pop + merge) executes only the first command. Why? How to execute also the merge?

StackOverflow https://stackoverflow.com/questions/6126804

  •  07-01-2021
  •  | 
  •  

Question

I set up a git alias like this:

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

Then I call it, like this:

git popmerge

The "git stash pop" is executed, but the "git merge master" is ignored.

If I run "git merge master" right after the "git popmerge"... it sumply runs as expected, performing the merge.

I have other aliases with long sequences of commands... and they run flawlessly. It seems something at "git stash pop" makes the alias process to halt... Is it possible to avoid this behavior? How?

Thanks.

Was it helpful?

Solution

Have you checked the exit code from stash pop?

&& implies that the subsequent list is only executed if the exitcode is 0 (success).

You can simply ignore the exitcode by using ; instead of &&.


Verify the success by using stuff like:

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

false && echo ok || echo fail   # echoes "fail"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top