代码之家  ›  专栏  ›  技术社区  ›  Spack

恢复git rebase的合并状态

  •  0
  • Spack  · 技术社区  · 7 年前

    我正处于git再基地的中间,有以下历史记录:

    edit eac4848
    join 84945e5
    done ed60fdd
    done 1c6399a
    

    如您所见,提交 1c6399a ed60fdd 已经完成,git现在正在尝试应用提交 84945e5 但也存在一些冲突。这是意料之中的,我只需要解决冲突,然后继续前进。

    不幸的是,我打过电话 git reset --hard 现在我的承诺已经不复存在了:

    edit eac4848
    gone 84945e5
    done ed60fdd
    done 1c6399a
    

    在初始合并冲突情况下,我应该使用什么命令恢复工作目录?

    我尝试调用以下命令:

    $ git merge --squash --ff 84945e5
    

    这种方法可行,但合并似乎没有考虑文件重命名。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Code-Apprentice    7 年前

    你可以试试

    git cherry-pick 84945e5
    

    这只会重复什么 git rebase 这首先导致了合并冲突。

    如果其他一切都失败了,你陷入了一场彻底的争吵,你可以从

    git rebase --abort
    

    现在,重复相同的步骤调整基础,避免犯同样的错误。

        2
  •  1
  •   Spack    7 年前

    答案隐藏在 git rebase 命令源代码(在shell中编写)。

    下一次提交只需使用以下命令来选择:

    $ git cherry-pick <NEXT_COMMIT>