在我们进行存储后,有关合并的信息会丢失.下面比较通常的合并和存储合并.
git merge release-2013-10-29
# Everything works, cool
git commit -am "Upgraded to release 2013-10-29"
git push origin dev
Run Code Online (Sandbox Code Playgroud)
结果如预期,合并提交:

在这里,我需要隐藏合并更改,以便查看上一个合并行为.
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
Run Code Online (Sandbox Code Playgroud)
结果:此提交不再是"合并".我们还丢失了合并中包含的所有单个创作提交,就像我将进行所有这些更改一样.

那么,合并时我们不应该藏匿任何东西吗?那么如何避免这种行为呢?
当您进行合并时,git 会存储对您要合并的分支的引用MERGE_HEAD。但似乎git stash没有保存参考。
您可以尝试将MERGE_HEAD应用隐藏后设置为要合并的提交:
假设您要将 release-2013-11-06 分支合并到 master 上,并且最后一次提交是 - 3be2c99,那么您可以执行以下操作:
git stash apply --index
git update-ref MERGE_HEAD 3be2c99
git status
# All conflicts fixed but you're still merging
# ....
Run Code Online (Sandbox Code Playgroud)
--index注意应用隐藏时的用法。这是将更改返回到索引中所必需的,否则您将只能在工作树中获得隐藏的更改。
PS:理想情况下,您应该避免隐藏未提交的合并。
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |