在git中重新定位功能分支后合并

Alp*_*per 6 git merge rebase

我将origin/develop上的特征分支重新定义为当前开发状态​​的当前状态.

git checkout feature-X
git rebase origin/develop
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我必须立即合并.这让事情变得混乱.

我认为重订基期的整体思路是,你可以改写历史(假装我们正在关闭起源的尖端/开发)和只需要合并,当你想更改融入产地/发展.

难道我做错了什么?

更新:我无法完全重现我所做的事情而没有更多的git魔法,但我正在尝试拼凑一个功能强大的功能分支模型,主要是关注这个要点.

当我在我的功能分支时,我"git rebase origin/develop".这完成但后来告诉我,我已经大大偏离了我尝试通过推/拉来修复的东西.这创造了我认为我不想要的合并.

The*_*ous 11

假设feature-X已经分支develop,更好的方法是将更改从远程拉到本地develop分支并feature-X从本地分支重新定位.这将避免合并提交.您可以稍后将feature-X合并到本地develop,然后将其推送.

如果feature-X被推到了遥控器上,正如@ crea1已经回答的那样,你将不得不在每次使用rebase的情况下运行它

git push -f origin feature-x
Run Code Online (Sandbox Code Playgroud)

原因是rebase为重新提交的提交创建了全新的提交ID.就git而言,它们是新的提交.这就是导致你的git pull进行合并提交的原因.只要没有人使用它,推力应该没问题.另外恕我直言,如果你的gitconfig中的pull.rebase设置为true会更好.

  • 在 rebase 之后不执行 push --force 会适得其反。您将不断收到重复提交。 (2认同)