Git 变基导致基本上所有文件发生合并冲突 - 甚至是未触及的文件

Git rebase causing merge conflicts on essentially all files - even untouched ones

git rebase 的典型行为是相对 "clean" 从基础到本地的合并。

然而,偶尔情况会变糟。基本上 每个 在基地中被触及的文件都需要手动合并到本地 - 无论文件是否已经 touched/changed 本地

为什么会这样?有合理的解决方法吗?

更新

出于某种原因在这个场景

git pull

工作很好。它需要手动合并 一个文件 - 这是一个 有效 手动合并。

所以我想这个问题在某种意义上已经演变为“git pull 相对于 git rebase 的要求是什么。我会寻找适用的问答。

一个可能的原因是 eol(行尾)字符,这在两个分支之间可能不同。

退出当前的第一个巡回变基(自 Git 2.12: git rebase --quit

使用选项(合并策略)-X ignore-space-at-eol 再次尝试您的 rebase,看看问题是否仍然存在。


git pull works just fine

这就是pull(fetch + merge)和rebase(replay commits)的区别

 x--x--x--x--X     (master)
        \
         --o--o--O (origin/master)

拉取将合并两个 HEAD 提交 XO,它们可能仅在一个文件中不同。

 x--x--x--x--X-----M     (master after git pull)
        \         /
         --o--o--O (origin/master)

A rebase(或 git pull --rebase)将在 origin/master 之上重放 master,并且之前的“x”提交可能会引入很多冲突,即使X (HEAD) 仅与 origin/master HEAD O.

中的一个文件不同
 x--x--x
        \         
         --o--o--O--x'--X' (master)
           (origin/master)