我有一个功能分支branch-foo
。它是从master
分支分支出来的,这是我们的稳定/生产分支。
我有以下工作流程:
-
我
branch-foo
推送到远程存储库并创建了一个拉取请求供团队审查。 -
然后,在我的本地分支
branch-foo
上,我根据拉取请求审查注释进行了代码更新。但我还没有推动它。 -
在这一点上,我注意到有新的合并要
master
,所以我获取了最新的主分支并进行了变基。这使我的branch-foo
重新定位到最新master
的负责人. -
现在,我尝试通过代码更新来推送
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.
- 我
- 看到上面的错误建议我拉动,所以我随后尝试
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