【问题标题】:How to get back stashed changes without solving git pull merge conflicts如何在不解决 git pull 合并冲突的情况下取回隐藏的更改
【发布时间】:2019-03-14 22:34:31
【问题描述】:

我有三个分支,分支a,b和分支HotFix

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

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


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

【问题讨论】:

  • 顺便说一句,这是我必须建议新 Git 用户 避免 git pull 的最重要原因之一:这实际上是两个单独的命令,如果你有运行这两个单独的命令,您将更接近于知道如何撤消第二个命令(哪里都出错了)。

标签: git git-merge git-pull


【解决方案1】:

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

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

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

如果由于某种原因合并结束,您仍然可以撤消它,方法是使用命令git reset --hard HEAD^ 在历史记录中返回上一步。

简而言之,当您在分支b 上时:git merge --abort 应该可以工作,如果不行,git reset --hard HEAD^ 可以。

【讨论】:

  • 非常感谢! @DogEata,你救了我的命 :)
【解决方案2】:

您需要执行两个操作。

  1. 中止合并

    你可以这样做

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

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

祝你好运!

【讨论】:

  • 非常感谢! @tymtam
  • @tymtam 直接回答问题。
猜你喜欢
  • 2018-08-04
  • 1970-01-01
  • 2022-12-16
  • 1970-01-01
  • 2018-06-27
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
相关资源
最近更新 更多