【发布时间】:2014-08-29 12:40:20
【问题描述】:
在我们进行存储后,有关合并的信息会丢失。下面比较了通常的合并和隐藏的合并。
右:合并+推送
git merge release-2013-10-29
# Everything works, cool
git commit -am "Upgraded to release 2013-10-29"
git push origin dev
结果如预期,一次合并提交:
错误:合并 + 存储 + 推送
在这里,我需要隐藏合并更改,以便查看合并前的行为。
git merge release-2013-11-06
# Conflicts fixed, but detected inappropriate behaviour
git stash
git stash pop
git commit -am "Upgraded to release 2013-11-06"
git push origin dev
结果:此提交不再是“合并”。我们还丢失了合并中包含的所有单一创作的提交,就像 我会 进行所有这些更改一样。
那么,我们不应该在合并时存储任何东西吗?那么如何避免这种行为呢?
【问题讨论】:
-
不要使用
stash。没有什么stash push/pop可以做到git commit -a -m stash-commit和git checkout branch-with-stash-commit && git reset HEAD^已经完美地做到了(没有任何像你描述的stash那样的不良行为)。我真的认为没有理由再使用git stash,我认为这是对早期 git 开发的一种解脱。 -
我不确定你的观点。一旦我修复了合并中的很多冲突,我需要恢复到合并前的状态“只是为了检查一些东西”。
commit、checkout或reset之间的任何一个都不会暂时保存我花了很长时间修复的冲突。只有stash会。或者你是想说我应该在没有验证以前的行为甚至一些“错误”代码/合并的情况下提交我的文件?更具体地说,从来没有人应该藏匿任何东西?