Git重置当前rebase

Pup*_*ppy 8 git rebase

我一直在做一个改变.我已经努力修复一些冲突,但我最终走错了方向,现在我只想重新开始修复这些冲突.

我想重置rebase,这样我仍然会重新定义当前的提交,但工作副本已经被重置为当提交被标记为首先出现冲突时.

如何在当前提交中重置rebase?

Pie*_*ron 16

首先,清理混乱:

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

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

git cherry-pick -n `git rev-parse REBASE_HEAD`
Run Code Online (Sandbox Code Playgroud)

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


小智 8

如果你在你的rebase之间,你可以做到

git rebase --abort
Run Code Online (Sandbox Code Playgroud)

  • 这将中止整个rebase,而不是仅仅重新定位这一个提交. (5认同)

ale*_*ete 6

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

git checkout -m <file>
Run Code Online (Sandbox Code Playgroud)

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

  1. 在rebase期间存在冲突
  2. 我搞砸了冲突解决方案
  3. 我运行了一个git status,从Git 2.0.0开始,它给了我这样的东西(只有你在做一个交互式的rebase):

    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
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我复制了rebase当前正在执行的命令的行: pick db2511c Modify file
  5. 我运行git rebase --edit-todo并将该行粘贴到文件的顶部
  6. 我跑 git rebase --skip