git merge将丢失分支引用

git merge将丢失分支引用,git,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上,这会导致拉取请

概述:

$ 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的设置是始终使用pull--rebase

另一方面,放置在合并点上的标记有点丢失。该标记从未被推送(尽管它已被请求)

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

我们今后如何避免这种情况?是什么导致了这个问题?我觉得我们没有做错什么

谢谢

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

解决方案是不使用
pull--rebase
-重定是丢失历史记录的原因。合并而不是重定基址的整个要点是保留单独的分支历史记录

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

git-pull--rebase
git-fetch
+
git-rebase

前者保留历史联系;后者创建全新的提交。(是否有特殊原因将
git pull
设置为始终重设基础?)

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

修复方法是不使用
拉-重新基
-重新基是丢失历史的原因。合并而不是重定基址的整个要点是保留单独的分支历史记录

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

git-pull--rebase
git-fetch
+
git-rebase

前者保留历史联系;后者创建全新的提交。(是否有特殊原因将
git pull
设置为始终重设基础?)

主题
中进行合并之前,您还可以在
主机
上执行
git pull
,以确保
主机
是最新的(这样合并不会导致非快进历史)。

我们使用git pull--rebase,因为它保留了历史。git pull(带有merge)人为地创建了从中央存储库的角度看没有发生的历史事件。在这些情况下,重设基础和合并不应有所不同。我想我会向git提交一个bug,看看对话的方向。我们使用git-pull-rebase,因为它保留了历史。git pull(带有merge)人为地创建了从中央存储库的角度看没有发生的历史事件。在这些情况下,重设基础和合并不应有所不同。我想我会向git提交一个bug,看看对话的结果如何。