从 master 变基时推送分支
Pushing branch when rebasing from master
我们是一个5人的开发团队。我们有一个 master 分支,每当我们处理新事物时,我们就创建一个新分支。完成更改后,我们将分支推送到 GitLab 并执行 merge/pull 请求,以便它再次与主分支合并。
我的机器上有一个分支,我已经工作了大约一个星期。在那一周,master 发生了变化,所以我在我的分支上执行这个命令:
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
在某些分支 returns:
# On branch some-branch
# Your branch and some-branch have diverged,
# and have 3 and 3 different commits each, respectively.
我该如何解决这个问题,或者我做错了什么?
您可以尝试在进行拉取之前为本地更改创建一个存储...
$ git commit -m "your commit"
$ git stash
$ git pull
$ git stash apply
$ git push
您应该强制推送您的分支,而不是合并更改。也就是说,在变基后使用 git push -f
。
当你执行 rebase 时,你是在告诉 Git 将 master 的历史重播到你的分支上,随后,你的分支的提交需要在重播工作之后就位。
这 改变了该分支的历史记录,这解释了为什么您会在 git status
中看到分歧消息,但这完全是故意的。但是,在将它与您的远程分支合并时,您 极大地 混淆了您的历史;它现在包含不应该存在的合并提交。
下次改用强制推动,但要确定你重新建立基础的工作通过了你的测试,无论是冒烟测试,unit/integration测试,或其他方式。
我们是一个5人的开发团队。我们有一个 master 分支,每当我们处理新事物时,我们就创建一个新分支。完成更改后,我们将分支推送到 GitLab 并执行 merge/pull 请求,以便它再次与主分支合并。
我的机器上有一个分支,我已经工作了大约一个星期。在那一周,master 发生了变化,所以我在我的分支上执行这个命令:
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
在某些分支 returns:
# On branch some-branch
# Your branch and some-branch have diverged,
# and have 3 and 3 different commits each, respectively.
我该如何解决这个问题,或者我做错了什么?
您可以尝试在进行拉取之前为本地更改创建一个存储...
$ git commit -m "your commit"
$ git stash
$ git pull
$ git stash apply
$ git push
您应该强制推送您的分支,而不是合并更改。也就是说,在变基后使用 git push -f
。
当你执行 rebase 时,你是在告诉 Git 将 master 的历史重播到你的分支上,随后,你的分支的提交需要在重播工作之后就位。
这 改变了该分支的历史记录,这解释了为什么您会在 git status
中看到分歧消息,但这完全是故意的。但是,在将它与您的远程分支合并时,您 极大地 混淆了您的历史;它现在包含不应该存在的合并提交。
下次改用强制推动,但要确定你重新建立基础的工作通过了你的测试,无论是冒烟测试,unit/integration测试,或其他方式。