2

所以我针对主人重新建立了一个分支。然而,

git push --set-upstream origin MyBranch

我明白了

 ! [rejected]        MyBranch -> MyBranch (non-fast-forward)
 error: failed to push some refs to 'https://mygit@bitbucket.org/mygit/myproject.git'
 hint: Updates were rejected because the tip of your current branch is behind
 hint: its remote counterpart. Integrate the remote changes (e.g.
 hint: 'git pull ...') before pushing again.

那么好吧。再次重新定位。顺利完成。然后

 git pull

 * branch            HEAD       -> FETCH_HEAD

好的,已经更新了

git push --set-upstream origin MyBranch

再次,错误。我可以强制推动,但我不喜欢丢失东西的风险,老实说,我真的很想知道一个适当的解决方案来解决这个恼人的问题,即使我按照规则手册玩也似乎会发生。

4

1 回答 1

1

根据您的描述,我将尝试对可能发生的事情做出有根据的猜测。

Git 拒绝将你的 rebase 提交推送到上游分支 ( origin/MyBranch),因为它们的提交哈希值与已经存在的提交哈希值不同。它们是不同的,因为您将本地提交重新设置在与上游分支中不同的提交之上。

问题

这是我认为您的情况可能如下所示的示例:

      Local                                Origin
A---B---C---F (master)                A---B---C---F (master)
            \                                 \
             D'---E' (MyBranch)                D---E (MyBranch)
  1. 提交DEinorigin/MyBranch最初基于Cfrom master。然后F成为新HEADmaster
  2. 当您这样做git pull时,master您会在本地仓库中获得新的提交F
  3. 您重新MyBranch基于 top of master,现在是,并且将andF的提交哈希更改为Dand 。ED'E'
  4. 发布git push origin MyBranch拒绝覆盖提交,因为 Git 将它们视为与 中的不同的提交origin,后者仍然基于C.

(可能的)解决方案

如果您是唯一一个在工作的人,MyBranch或者如果您可以轻松地与可能有兴趣在该分支中工作的任何人交流,我说只需强制推送您的重新定位提交。同样,假设在此期间没有其他人推动提交origin/MyBranch,您将不会丢失任何东西。

如果这根本不能反映您的情况,请随意忽略此建议,如果可能,请添加有关该问题的更多详细信息。

于 2015-07-13T15:02:15.030 回答