重新设置基准后,本地分支上的推送代码丢失

时间:2018-08-08 08:16:09

标签: git version-control rebase

我有一个feature-1分支。最终,它将合并到我的develop分支中,该分支在我的团队之间共享。进行一些更改之后,我进行了一次提交{1}并将其推送到源feature-1分支。

当我将feature-1改成develop时,没有冲突,并且git说:Your branch and 'origin/feature-1' have diverged, and have 20 and 1 different commits each, respectively.此时,人们将使用git push --force就是这样。但是我注意到,在重新设置基准之后,我在本地提交{1}中所做的所有更改都丢失了,因此我无法进行强制推送,因为我在origin / feature-1上的提交{1}将丢失。

当重新设置基准时忽略我的推送提交时,这是git的正常行为吗?我是否应该在重新确定基准之前就推送提交?

1 个答案:

答案 0 :(得分:1)

对于您的情况,可以强制将feature-1分支推送到远程。

我们可以通过以下图表进行说明:

在将feature-1迁移到develop分支之前,提交历史记录应为:

...---C-F1                   feature-1, origin/feature-1
       \
        D1---D2---...---D20  develop, origin/develop

git rebase develop分支上执行feature-1命令后,提交历史记录将为:

...---C-F1    origin/feature-1
       \
        D1---D2---...---D20---F1'  feature-1
                         |
              develop, origin/develop

因此git将检测到feature-1分支“ Your branch and 'origin/feature-1' have diverged, and have 20 and 1 different commits each, respectively”。

如果您强行推动feature-1分支,并更新feature-1分支将位于develop分支的顶部,那么您可以将feature-1分支合并到{{1} }分支。