如何推送重定基的分支



我有一个功能分支branch-foo。它是从master分支分支出来的,这是我们的稳定/生产分支。

我有以下工作流程:

  1. branch-foo推送到远程存储库并创建了一个拉取请求供团队审查。

  2. 然后,在我的本地分支branch-foo上,我根据拉取请求审查注释进行了代码更新。但我还没有推动它。

  3. 在这一点上,我注意到有新的合并要master,所以我获取了最新的主分支并进行了变基。这使我的branch-foo重新定位到最新master的负责人.

  4. 现在,我尝试通过代码更新来推送branch-foo。并被拒绝git错误:

! [rejected]    branch-foo -> branch-foo (non-fast-forward)
error: failed to push some refs to 'bitbucket.org:myorg/my-project.git'
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.
  1. 看到上面的错误建议我拉动,所以我随后尝试git pull origin branch-foo,但得到另一个错误:
From bitbucket.org:myorg/my-app
* branch            branch-foo -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.

所以,我陷入了困境,我无法推送我的更改,也无法拉动遥控器。我们的团队强制只允许快进,不允许直接合并。

如何正确解决此问题,以便现在可以将重定基准的分支推送到拉取请求分支?

你开始

A---B---C foo
/
D---E master

你推,主更新了:

A---B---C foo and origin/foo
/
D---E---F---G origin/master

你做了一些修改, 你在主服务器上获取变基:

A---B---C origin/foo
/
D---E---F---G origin/master

A'---B'---C'  foo

Foo不是Origin/Foo的快进,但它是Master的快进。 你需要用力推动,因为你没有在foo上快进:

避免出现意外,避免

git push --force

只需使用:

git push --force-with-lease

你将拥有

D---E---F---G origin/master

A'---B'---C'  foo and origin/foo

最新更新