Git rebase导致基本上所有文件的合并冲突 - 即使是未触及的文件

时间:2017-07-27 04:40:24

标签: git rebase

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

然而事情却发生了变化。基本上在基础中触摸的每个文件都需要手动合并到本地 - 无论文件是否在本地被触摸/更改

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

更新

出于某些原因场景

git pull

正常 。它需要手动合并 一个文件 - 这是一个有效的手动合并。

所以我猜这个问题在某种意义上已经转化为"与git pull相比,git rebase需要什么条件。我会寻找适用的Q& A。

1 个答案:

答案 0 :(得分:3)

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

退出首次巡视当前rebase(自Git 2.12: git rebase --quit起)

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

  

git pull工作得很好

这就是pull(fetch + merge)和rebase(重播提交)之间的区别

 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)

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)