git rebase导致origin / master和master发散

时间:2012-04-10 23:17:38

标签: git push rebase

我已经看过问题了

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推送到原点?

2 个答案:

答案 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

非常成功!