git merge失去了分支引用

时间:2011-10-06 00:38:36

标签: git

概述:

$ git pull
... time passes ...
$ git checkout topic # remote topic
$ git checkout master
$ git merge topic
$ git push
    non-fast-forward updates were rejected
$ git pull
    merge by rebase
$ git push

结果是文件更改被推送,但返回主题分支的引用已丢失。 (在github上,这会导致请求不关闭。)它还使图形看起来很奇怪,因为主题分支未显示为合并为主。

导致此情况发生的触发器是需要合并的合并后的拉动。也就是说,在主题合并期间更改了master。

拉动的设置是始终使用pull --rebase。

另一方面影响放置在合并点上的标签有点丢失。标签从未被推送过(虽然它是被要求的)。

我们能够通过重新合并主题分支来修复图形。

我们将来如何避免这种情况?是什么导致了这个问题?我觉得我们没有做错任何事情。

谢谢!

PS 配置设置为仅拉/推当前分支。

1 个答案:

答案 0 :(得分:4)

“修复”是不使用pull --rebase - 变基是失去历史的原因。合并而不是重新定位的整个要点是保持单独的分支历史。

git pull通常相当于git fetch + git merge

git pull --rebasegit fetch + git rebase

前者保留历史链接;后者创建了全新的提交。 (您有git pull设置为始终重新绑定的特殊原因吗?)

在合并git pull之前,您还可以在master上执行topic,以确保master是最新的(以便合并不会导致非快进历史。)