gol*_*ove 9 git push github rebase git-fork
Github上的某个用户拥有一个包含单个主分支的存储库.我已将该存储库分配到我自己的帐户中.我在自己的分叉存储库上创建了一个新分支,并对其进行了一些更改.
上游用户已将更改提交给其主服务器.我希望通过这些更改来更新我的主人.另外,如果我理解rebase正确,我想要rebase那个主人的分支.我不想与master合并,因为我还没有完成我的分支.注意:上游更改的文件与我在分支中更改的文件不同,因此不应存在冲突.
我尝试过以下方法:
我将上游用户的更改提取到我的本地仓库中:git pull upstream master
我将更改从我的本地主人推送到我的分叉主人:git push origin master
我在我当地的主人那里重新定位了当地的分支:git checkout mybranchgit 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)
但同样的错误仍然存在.
我该如何做我想做的事?
这是因为您mybranch在此之前已经发布了您的分支。
解决办法很简单:就是不这样做。你想改变出版的历史,这绝不是一个好主意!对于已经在您的公共分支上工作的其他开发人员来说,这可能会导致非常难看的错误mybranch。
技术解决方案是:git push --force origin mybranch或者删除远程分支并使用git push origin :mybranchand再次推送它git push origin mybranch
mybranch但如果已经发布,则不应该这样做。
| 归档时间: |
|
| 查看次数: |
6801 次 |
| 最近记录: |