没有进行任何更改时,如何在git交互式rebase中发生冲突?

mrm*_*reg 3 git

我想用git重写一个提交,所以我做了一个git rebase -i 00112233或类似的事情,但在不对将应用的提交进行任何更改的情况下,发生了合并冲突。输入合并命令,弹出编辑器,我接受其中的内容,并且存在合并冲突。

我的理解git rebase -i是将HEAD其设置为00112233,然后00112233 按编辑器中指定的顺序应用之后的提交(由于已经应用到当前状态,因此它们是一致的)(在这种情况下,我没有更改) )。我不知道该过程将如何导致合并冲突。

发生这种情况有什么方式?

Edw*_*son 5

如果历史记录不是线性的,则可能必须重新应用首次合并时采用的冲突解决方案。要说明一下,如果历史记录是:

C:\Temp\TestRepo>git log --graph  --oneline
*   3fc0537 Merge branch 'branch'
|\
| * 79e29f9 branch
* | 0de3658 master
|/
* edead94 Initial revision
Run Code Online (Sandbox Code Playgroud)

并且合并提交3fc0537包含冲突:

C:\Temp\TestRepo>git log -1
commit 3fc053701a53a30a01469f560ad5057eab74d126
Merge: 0de3658 79e29f9
Author: Edward Thomson <ethomson@edwardthomson.com>
Date:   Thu Feb 6 17:55:59 2014 -0800

    Merge branch 'branch'

    Conflicts:
        file.txt
Run Code Online (Sandbox Code Playgroud)

然后重新定基edead94将产生合并冲突。

  • @testuser另外,要重新解决冲突,您可以查看`git rerere`工具:https://www.kernel.org/pub/software/scm/git/docs/git-rerere.html (2认同)