Git alias с двумя командами (stash pop + merge) выполняет только первую команду. Зачем? Как выполнить также слияние?

Я создал псевдоним Git, как это:

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

Тогда я называю это так:

git popmerge

"Git stash pop" выполняется, но "git merge master" игнорируется.

Если я запускаю "git merge master" сразу после "git popmerge"... он запускается как обычно, выполняя слияние.

У меня есть другие псевдонимы с длинными последовательностями команд... и они работают без нареканий. Кажется, что-то в "git stash pop" заставляет процесс псевдонима останавливаться... Можно ли избежать такого поведения? Как?

Благодарю.

1 ответ

Решение

Вы проверили код выхода из хранилища?

&& подразумевает, что последующий список выполняется только в том случае, если код выхода равен 0 (успех).

Вы можете просто проигнорировать код выхода, используя ; вместо &&,


Проверьте успех, используя такие вещи, как:

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

false && echo ok || echo fail   # echoes "fail"
Другие вопросы по тегам