我已经看过问题了
git rebase and git push: non-fast forward, why use?
和
master branch and 'origin/master' have diverged, how to 'undiverge' branches'?
在这个具体案例中,我仍然不清楚我需要做些什么。我首先让origin / master和master同步。两者的提交顺序是
---o---A---B
我现在在我的本地存储库上再提交两次提交,以便我有
---o---A---B---C---D
现在我做了一个rebase,因为我想重新排序提交。所以我的主人现在是: -
---o---A---C---D---B
虽然我的出身/主人仍然像第一种情况一样。现在,如果我尝试进行git推送,它会拒绝推送它,因为master和origin / master已经分歧了。如何将此rebase推送到原点?
答案 0 :(得分:2)
你可以强制它:
git push -f origin master
但要小心。这实际上是在改变原点的历史,所以只有当你知道它不会破坏其他开发者的任何东西时才这样做。
一般来说,重新定位已经推送到远程/中央存储库的提交并不是一个好主意。
答案 1 :(得分:0)
我经历了好几次,起初我就像git所说的那样,试图将我过去的变化与我当地的新变化合并 - 不行。基本上,当您的本地repo分支与远程分支分离时,您还必须重新绑定远程分支。 E.g:
git:(branch)$ git commit -m "my fix."
git:(branch)$ git checkout master
git:(master)$ git rebase branch
git:(master)$ git rebase origin/master
git:(master)$ git push origin master
非常成功!