'git rebase`冲突

'git rebase`冲突

问题描述:

因此,昨天我发布了一个question关于一些奇怪的冲突,当我试图将上游分支重新绑定到我的本地主题分支。'git rebase`冲突

最后我用了git rebase --merge upstream,并解决了自从上一次rebase以来没有碰过的文件中的很多冲突。

在这种情况下,我对rebase的理解是,它将我的提交从该主题分支中分离出来,应用来自上游分支的提交,然后在我的提交之上应用(作为补丁)。所以,它最终是一个快速前进的操作。我不明白的是......为什么我会将冲突与来自上游的犯罪相结合。这些也是作为补丁应用吗?我以为只是...在同一分支上一次提交之前“焊接”了一些提交的行为?

我在问这个,因为我有很多冲突文件我没有碰过。噢,我每天都会对这个上游分支进行重组。

UPDATE

我刚刚注意到,一些从上游带来的将自己的主题分公司提交的有他们的SHA-1 ID改变。有谁知道可能会导致Git做到这一点?难道是--merge开关?

我的git版本是1.5.6.5

+0

你有某种类似于http://*.com/questions/1042207/git-svn-rebase-fails的自动转换吗? – VonC 2010-08-12 08:45:18

+0

@VonC'core.autocrlf'是空白的,我假设其默认值为“input”。这是因为这个原因吗?我不知道现在如何重现此问题,以确定将其设置为false会产生什么影响。 – 2010-08-12 08:52:58

+0

ţ:确保将其设置为false。 – VonC 2010-08-12 09:11:25

重新编写历史记录。如果你重新提交已经被推送到遥控器的提交,你正在进入一个受到伤害的世界。更糟糕的是,如果你继续像这样改版。 Rebase有它的优势时间,但它是一个专业工具IMO,而不是休闲工具,像合并。

然后应用(作为补丁)我的提交在这些之上。

是,新提交

所以,它最终是一个快进操作

号快进被简单地移动指针HEAD科。您正在从远程引入新对象,然后在其上应用修补程序。

如果你的本地和远程上次同步在A1,说你添加的(本地)A2A3提交,发现遥控又增加了B1B2,重订基期将藏匿A2A3,拉下B1B2(应该是快进,因为他们都有一个共同的后代A1),然后再应用补丁A2A3新提交(因此新的SHA-1)A2'A3'

所以现在你的本地历史是: A1 - B1 - B2 - A2' - A3' 这不是一个快进。

+1

我知道rebase的危险,而且我没有使用这样的rebase。不过由于某些原因,当我发布这个问题时,我对文件没有感到奇怪的冲突。众所周知,Rebase产生的冲突少于合并,但当时对我而言,它并没有那样的表现。因此我的问题。我没有找到原因,但没有重现它。 – 2011-01-08 16:31:54