Git将我的分叉分支在上游主服务器上

gol*_*ove 9 git push github rebase git-fork

Github上的某个用户拥有一个包含单个主分支的存储库.我已将该存储库分配到我自己的帐户中.我在自己的分叉存储库上创建了一个新分支,并对其进行了一些更改.

上游用户已将更改提交给其主服务器.我希望通过这些更改来更新我的主人.另外,如果我理解rebase正确,我想要rebase那个主人的分支.我不想与master合并,因为我还没有完成我的分支.注意:上游更改的文件与我在分支中更改的文件不同,因此不应存在冲突.

我尝试过以下方法:

上游用户的更改提取到我的本地仓库中:
git pull upstream master

更改从我的本地主人送到我的分叉主人:
git push origin master

我在我当地的主人那里重新定位了当地的分支:
git checkout mybranch
git rebase master

我试图我重新定位的本地分支送到我的分支分支:
git push origin mybranch

但是,我收到以下错误:

To https://github.com/myusername/myforkedrepository.git
 ! [rejected]        mybranch -> mybranch (non-fast-forward)
error: failed to push some refs to 'https://github.com/myusername/myforkedrepository.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

请注意,这origin是我的分叉存储库,upstream是原始存储库.

stackoverflow上有类似的问题,它提出了一个稍微简单的方法:

git fetch upstream
git rebase upstream/master
Run Code Online (Sandbox Code Playgroud)

这没有给出任何错误,但它也没有向我的远程分支推送任何东西.在尝试了上述之后,我再次尝试了

git push origin mybranch
Run Code Online (Sandbox Code Playgroud)

但同样的错误仍然存​​在.

我该如何做我想做的事?

mus*_*tze 1

这是因为您mybranch在此之前已经发布了您的分支。

解决办法很简单:就是不这样做。你想改变出版的历史,这绝不是一个好主意!对于已经在您的公共分支上工作的其他开发人员来说,这可能会导致非常难看的错误mybranch


技术解决方案是:git push --force origin mybranch或者删除远程分支并使用git push origin :mybranchand再次推送它git push origin mybranch

mybranch但如果已经发布,则不应该这样做。