我创建了一个从开发中删除的功能分支。
另一位开发人员从 master 中删除了他们的功能分支。
我想将我的功能分支合并到他们的功能分支中,但是从开发中获取更改也是不可接受的。
所有分支都已推送。
本质上,我希望我的分支从 master 中删除而不是开发。
如何做到这一点?
我的第一个想法是可能会使用一些变基,但我不知道该怎么做。
我创建了一个从开发中删除的功能分支。
另一位开发人员从 master 中删除了他们的功能分支。
我想将我的功能分支合并到他们的功能分支中,但是从开发中获取更改也是不可接受的。
所有分支都已推送。
本质上,我希望我的分支从 master 中删除而不是开发。
如何做到这一点?
我的第一个想法是可能会使用一些变基,但我不知道该怎么做。
即使它已被推送,仍然可以重新设置您的分支,将其起点从 更改develop
为master
。但是,如果您需要发布它,它将需要强制推送,并且其他开发人员将不得不重做 fetch 或 pull。
为此,结帐yourbranch
并执行
git rebase --onto master develop
然后,您将能够合并两个分支,因为它们具有相同的起点,合并将更清晰,并强制推送结果。如果您不需要 push yourbranch
,而是将其合并回master
,则只需简单地 pushmaster
分支就足够了。
此外,如果您想要严格的开发历史,将两个独立的功能分支合并在一起通常不是最佳实践。如果您的分支确实需要其他分支的提交,更好的选择是等待其中一个分支合并回master
.
注意: 此解决方案假定您的项目根目录中没有任何*.patch文件。
接下来的命令会将my-feature分支中但不在开发分支中的所有提交提取到补丁文件中:
git checkout my-feature && git format-patch develop
切换到他们的功能分支并从补丁中挑选你的提交:
git checkout their-feature && git am -3 *.patch
-3
如果您会遇到冲突,参数用于回退到 3 路合并。