从主人变基时推分支

时间:2015-12-23 17:41:50

标签: git git-rebase

我们是一个由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.

我该如何解决这个问题,或者我做错了什么?

2 个答案:

答案 0 :(得分:4)

你应该强制推动你的分支,而不是合并更改。也就是说,在你重组之后使用git push -f

当你执行rebase时,你告诉Git将master的历史记录重放到你的分支上,然后,你的分支的提交需要在重播的工作之后落实到位。

更改了该分支的历史记录,这解释了您在git status中看到分歧消息的原因,但这完全是故意的。但是,在将其与远程分支合并时,您极大地会混淆您的历史记录;它现在包含永远不应存在的合并提交。

下次使用强制推送,但是某些您已经重新启动的工作会通过您的测试,无论是冒烟测试,单元/集成测试,还是其他。

答案 1 :(得分:-2)

您可以尝试在进行拉动之前为本地更改创建一个存储...

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