Git重置当前rebase

时间:2016-02-03 09:12:55

标签: git rebase

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

我想重置rebase,这样我仍然可以重新设置当前提交,但工作副本已经重置为提交时首先标记了冲突。

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

4 个答案:

答案 0 :(得分:6)

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

git rebase --abort

答案 1 :(得分:6)

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

git checkout -m <file>

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

首先,清除混乱:

git reset --hard HEAD

然后,选择您当前正在重新确定的提交:

git cherry-pick -n `git show REBASE_HEAD --pretty='format:%H' --no-patch`

就是这样。像往常一样,您将能够在解决冲突后继续进行重新设置。