git:冲突提交在哪里进行变基

Jea*_*eri 3 git rebase

假设我有这样的提交历史

              master
               |
|A| -> |B| -> |E|
        |
       |C| -> |D|
               |
              hotfix
Run Code Online (Sandbox Code Playgroud)

假设提交E和D有冲突.现在,根据文件,经过一次变革

$> git checkout hotfix
$> git rebase master
# fix conflicts
$> git add -A
$> git rebase --continue
$> git push --force # rewrite history of branch hotfix on remote
Run Code Online (Sandbox Code Playgroud)

我会最终结束

              master
               |
|A| -> |B| -> |E|
               |
              |C| -> |D|
                      |
                    hotfix
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到我的合并/冲突结果在哪里?如果我变基再次

$> git rebase master
Run Code Online (Sandbox Code Playgroud)

我不希望再次发生同样的冲突,对吗?

最后一个问题,如果提交D在提交E之前,我上面显示的图表(在rebase之后的结果)是否仍然相同?

moc*_*ace 5

但是,我没有看到我的合并/冲突结果在哪里?

当你将git存储在.git目录下的临时区域中时,将临时对象存储起来.(例如,.git/rebase-merge.)如果存在冲突,将要求您在执行rebase的过程中解决它们.

如果我再次做出反抗......我不希望再次发生同样的冲突,对吗?

不,你不会再次得到相同的冲突,因为你已经在之前的(第一次)rebase中解决了它们.

最后一个问题,如果提交D在提交E之前,我上面显示的图表(在rebase之后的结果)是否仍然相同?

是的,无论在哪里C,D结果它仍然是相同的,在某种意义上它们将被应用在E主人的顶端,但在这两种情况下,它不会完全是你绘制的图表.主要区别在于提交将是D'C',即使它们完全相同,D并且C在没有rebase冲突的情况下,它们将是新提交.