Git 重置当前 rebase

Git reset current rebase

我一直在做一个变基。我一直在努力解决一些冲突,但我最终走错了方向,现在我只想重新开始解决这些冲突。

我想重置变基,这样我仍然会变基当前提交,但工作副本已重置为提交最初被标记为冲突时的状态。

如何重置当前提交的变基?

如果你在你的变基之间,你可以做

git rebase --abort

如果您有多个提交在两个分支上编辑相同的文件,并且在变基过程中决定要保留一些工作,而不是放弃所有已经做出的更改 (git rebase --abort) 那么我想您需要查看目录 .git/rebase-apply 并检查 patch 文件。它包含在变基期间所做的所有更改。您将在执行 git rebase --abort 后手动应用此补丁。

如果您只想为特定文件重做合并,您需要做的就是:

git checkout -m <file>

如果你想重做整个提交,我是这样做的(可能有更好的方法):

  1. 变基过程中发生冲突
  2. 我搞砸了冲突解决
  3. I 运行 a git status 从 Git 2.0.0 开始,给我这样的东西(只有当你进行交互式变基):

    interactive rebase in progress; onto 14ed389
    Last command done (1 command done):
       pick db2511c Modify file
    Next command to do (1 remaining command):
       pick d1c2037 Modify file one more time
      (use "git rebase --edit-todo" to view and edit)
    You are currently rebasing branch 'other' on '14ed389'.
      (fix conflicts and then run "git rebase --continue")
      (use "git rebase --skip" to skip this patch)
      (use "git rebase --abort" to check out the original branch)
    
    Unmerged paths:
      (use "git reset HEAD <file>..." to unstage)
      (use "git add <file>..." to mark resolution)
    
            both modified:   file.txt
    
  4. 我复制 rebase 当前正在执行的命令行:pick db2511c Modify file
  5. I 运行 git rebase --edit-todo 并将该行粘贴到文件顶部
  6. 我运行git rebase --skip

首先,收拾残局:

git reset --hard HEAD

然后,挑选您当前正在变基的提交:

git cherry-pick -n `git rev-parse REBASE_HEAD`

就是这样。与往常一样,您将能够在解决冲突后继续变基。