从主分支进行变基时推送分支

4
我们是一个由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命令,但是出现了完全相同的错误。
为了让情况更加清晰,对于some-branch分支,执行git status命令返回以下结果:
# On branch some-branch
# Your branch and some-branch have diverged,
# and have 3 and 3 different commits each, respectively.

我应该怎样修复这个问题,或者是我做错了什么吗?
2个回答

4
你应该强制推送你的分支,而不是合并更改。也就是说,在rebase之后使用git push -f
当你执行rebase时,你要求Git将主分支的历史记录重新播放到你的分支上,随后,你的分支提交需要在重新播放的工作之后落入相应位置。
这会更改该分支的历史记录,这就解释了为什么你在git status中看到了分歧消息,但这完全是有意的。然而,在将其与远程分支合并时,你会极大地混淆你的历史记录;现在它包含了本不应存在的合并提交。
下一次请使用force-push,但务必确保你已经通过了测试,无论是烟雾测试、单元/集成测试还是其他测试。

1
请确保没有其他人正在推送到相同的远程分支。 - TrueWill

-2

在进行拉取操作之前,您可以尝试为本地更改创建一个存储区...

$ git commit -m "your commit" 
$ git stash
$ git pull
$ git stash apply
$ git push

这并不会在这种情况下有所帮助。 - Makoto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接