繁体   English   中英

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

[英]Merge after rebasing feature branch in git

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

git checkout feature-X
git rebase origin/develop

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

我认为变基的整个想法是你可以重写历史(假装我们正在处理起源/开发的顶端)并且只有当你想要将你的变化整合到origin / develop时才必须合并。

难道我做错了什么?

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

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

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

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

git push -f origin feature-x

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

如果您在origin / develop之上重新定义feature-x,则可以在本地repo上执行此操作。 这意味着feature-x仍然处于远程存储库中的rebase之前的状态。 由于他们不再拥有相同的祖先,git会尝试合并。

要更新远程分支,您可以执行强制推送。

git push origin feature-x --force

但要注意,如果除了你以外的其他人正在使用feature-x ,并且开始推/拉它可能会变得混乱。

我发现这个链接对于学习合并与变基有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM