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

发布于 2024-11-09 12:59:02 字数 487 浏览 4 评论 0原文

我像这样设置了一个 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”...它肯定会按预期运行,执行合并。

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

谢谢。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海之角 2024-11-16 12:59:02

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

&& 意味着仅当退出代码为 0(成功)时才执行后续的列表

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


使用以下内容验证是否成功:

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

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

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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文