【发布时间】:2011-05-25 15:17:25
【问题描述】:
我这样设置了一个 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”中的某些东西使别名进程停止...是否可以避免这种行为?怎么样?
谢谢。
【问题讨论】:
-
您确定,您首先要使用
stash pop弄脏您的工作目录,然后再使用merge?先执行merge,然后执行pop不是更安全吗?此外,我不确定忽略作为答案接受的退出状态是否真的很可取。stash pop的失败不是意味着有冲突吗?你真的想在另一个容易发生冲突的merge上增加混乱吗? -
是的,我确定。唯一的
stash save / stash pop目的只是为了让checkout master命令in this sequence 始终成功。我希望存储堆栈为空,并且stash pop始终成功。 成功stash pop的退出状态不为零。 别问我为什么。这就是我需要;解决方法的原因。考虑紧跟在save之后的pop发生冲突的可能性:在这种情况下,它为零。 -
好的,不知道保存完全基于同一个提交。然后,唯一可以预料的冲突是从合并 master 到 dev - 很好。太糟糕的 git 命令退出状态行为没有真正记录在案......