2

我已经看过问题了

git rebase 和 git push:非快进,为什么要使用?

master 分支和 'origin/master' 已经发散了,如何' undiverge' 分支'?

我仍然不清楚在这种特定情况下我需要做什么。我首先让 origin/master 和 master 同步。两者的提交顺序是

---o---A---B

我现在在我的本地存储库上提交了另外两个提交,这样我就有了

---o---A---B---C---D

现在我做了一个 rebase,因为我想重新排序提交。所以我的主人现在是:-

---o---A---C---D---B

而我的起源/主人仍然和第一种情况一样。现在,如果我尝试执行 git push,它会拒绝推送它,因为 master 和 origin/master 已经分歧。如何将此变基推到原点?

4

2 回答 2

2

你可以强制它:

git push -f origin master

不过要小心。这实际上改变了起源的历史,所以只有在你知道它不会破坏其他开发者的任何东西的情况下才这样做,例如。

一般来说,对已经推送到远程/中央存储库的提交进行 rebase 并不是一个好主意。

于 2012-04-10T23:20:53.813 回答
0

我已经经历过几次这种情况,起初我像 git 所说的那样拉,它会尝试将我过去的更改与我的新本地更改合并 - 不好。基本上,当您的本地 repo 分支与远程分支分歧时,您也必须重新设置远程分支。例如:

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

巨大的成功!

于 2016-05-04T15:11:26.457 回答