如何在不解决 git 合并冲突的情况下取回隐藏的更改

How to get back stashed changes without solving git pull merge conflicts

我有三个分支,分支ab和分支HotFix

我在分支 HotFix 上工作,在那里我正在解决一个问题,然后我接到了另一项工作的电话。我需要切换到分支 b。我隐藏了当前的分支更改,然后在 git pull origin b.

之后执行 git checkout b

提取更改后 git bash 向我显示合并冲突,这些文件的数量确实很大,我不想手动解决冲突。我失去了我的本地分支 HotFix 及其工作。有没有办法在不解决冲突的情况下取回隐藏的更改。


我认为我正在寻找 git unpullgit reverse pull

您 运行 的命令是 git pull origin b :它是两个命令的组合:

  • 首先 git fetch origin b 更新一个名为 origin/b,
  • 的本地 b运行ch
  • 然后 git merge origin/b 尝试将第一步中获取的更改合并到本地 b运行ch b.

冲突发生在第二步:合并。虽然它们存在冲突,但合并并未完成,因此您可以使用命令 git merge --abort.

取消

如果由于某种原因合并结束,您仍然可以撤消它,方法是使用命令 git reset --hard HEAD^.

返回历史记录中的一步

简而言之,当您在 b运行ch b 上时:git merge --abort 应该可以,如果没有,git reset --hard HEAD^ 也可以。

您需要执行两个操作。

  1. 中止合并

    您可以使用

    • git merge --abort;或
    • git reset HEAD --hard(这个应该没有必要
  2. 获取您的藏品

    1. 结帐 HotFix git checkout hotfix;然后
    2. 使用 git stash apply 应用存储。

祝你好运!