git – 从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状态:

# 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状态下看到分歧消息,但这完全是故意的.但是,在与远程分支合并时,您的历史很混乱;它现在包含应该永远不存在的合并提交.

下次使用强制推送,但要确保您已重新设置的工作通过测试,无论是冒烟测试,单元/集成测试,还是其他.

点赞