[英]Can I use Git Rebasing when the remote Master Branch is protected from direct pushing?
[英]Pushing branch when rebasing from master
我们是一个由5人组成的开发团队。 我们有一个主分支,每当我们处理新事物时,我们就会创建一个新的分支。 当我们完成更改后,我们将分支推送到GitLab并执行合并/拉取请求,以便它再次与主服务器合并。
我的机器上有一个分支,我已经工作了大约一个星期。 在那一周,主人有变化,所以我在我的分支上执行此命令:
git rebase master
一旦完成,我这样做是为了推动我的新分支:
git push origin some-branch
当我这样做时,我收到此错误:
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
我做它的建议,我做一个git pull origin some-branch
。 现在,我更改的文件已使用===HEAD>
文本进行了修改。 所以我解决了这个问题,并重新开始工作。
然后,我尝试再次执行git push origin some-branch
,并出现完全相同的错误。
为了使它更清晰,某些分支返回的git status
:
# On branch some-branch
# Your branch and some-branch have diverged,
# and have 3 and 3 different commits each, respectively.
我怎么能解决这个问题,或者我做错了什么?
你应该强制推动你的分支,而不是合并更改。也就是说,在你重组之后使用git push -f
。
当你执行rebase时,你告诉Git将master的历史重放到你的分支上,然后,你的分支的提交需要在重放的工作之后到位。
这改变了该分支的历史记录 ,这解释了为什么你在git status
看到分歧消息,但这完全是故意的。 但是,在与远程分支合并时,您的历史很混乱; 它现在包含应该永远不存在的合并提交。
下次使用强制推送,但要确保您已重新设置的工作通过测试,无论是冒烟测试,单元/集成测试,还是其他。
您可以尝试为本地更改创建一个存储区,然后再进行拉动...
$ git commit -m "your commit"
$ git stash
$ git pull
$ git stash apply
$ git push
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.