再一次:快进错误



所以我根据master重新建立了一个分支。然而,

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

Ok,已经更新了

git push --set-upstream origin MyBranch

又是错误。我可以强行推动,但我不喜欢失去东西的风险,说实话,我真的很想知道这个恼人的问题的适当解决方案,即使我按照规则手册玩。

根据你的描述,我要试着做一个有根据的猜测可能发生了什么

Git拒绝将你的重基提交推送到上游分支(origin/MyBranch),因为它们的提交哈希值与已经存在的提交哈希值不同。它们是不同的,因为你在一个不同的提交之上重新构建了本地提交,而不是在上游分支中的提交。

问题

下面是我认为你的情况可能是什么样的一个例子:

      Local                                Origin
A---B---C---F (master)                A---B---C---F (master)
                                             
             D'---E' (MyBranch)                D---E (MyBranch)
  1. origin/MyBranch中的DE最初是基于master中的C。然后F成为master的新HEAD
  2. 当你在master中做了git pull,你在本地的repo上得到了新的F
  3. 您将MyBranch重新基于master之上,现在是F,并且将DE的提交散列更改为D'E'
  4. 发布git push origin MyBranch拒绝覆盖提交,因为Git认为它们origin中的提交不同,后者仍然基于C

(可能的)解决方案

如果你是唯一一个在MyBranch上工作的人,或者如果你可以很容易地与任何人交流,他们可能对在该分支上做工作感兴趣,我建议强制推送你的重基提交。同样,假设在此期间没有其他人将提交推送到origin/MyBranch,您不会损失任何东西。

如果这根本不能反映你的情况,请忽略这个建议,如果可能的话,请添加更多关于问题的细节。

相关内容

  • 没有找到相关文章

最新更新