代码之家  ›  专栏  ›  技术社区  ›  Hai Hoang

重新定位后本地分支上的推送代码丢失

  •  0
  • Hai Hoang  · 技术社区  · 6 年前

    我有一个 feature-1 分支机构。最终它将合并到我的 develop 在我的团队中共享的分支。在一些更改之后,我提交{1}并将其推送到源位置 特征1 分支机构。

    当我把我的 特征1 进入之内 发展 ,没有冲突,Git说: Your branch and 'origin/feature-1' have diverged, and have 20 and 1 different commits each, respectively. 在这一点上,人们将做一个git推-力,仅此而已。但是我注意到,在rebase之后本地提交{1}中的所有更改都将丢失,因此我无法执行强制推送,因为在origin/feature-1上的提交{1}将丢失。

    当git在rebase时忽略我的推送提交时,它是不是正常的行为?难道我不应该在恢复平衡前推commit吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Marina Liu    6 年前

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

    我们可以用下图来说明:

    重新定位前 特征1 进入之内 develop 分支 ,提交历史记录应为:

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

    执行后 git rebase develop 指挥 特征1 分支 ,提交历史将是:

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

    所以Git会发现 特征1 “分支” Your branch and 'origin/feature-1' have diverged, and have 20 and 1 different commits each, respectively “。

    如果你用力推 特征1 分支和更新 特征1 树枝会在上面 发展 分支,你可以合并 特征1 分支到 发展 然后分支。