如何基于未合并特性分支创建新分支,避免squash merge冲突
问题解答
当然可以基于未被squash merge到main的特性分支A创建分支B继续开发,只要后续操作得当,就不会在A被合并到main后引发问题。具体操作步骤如下:
创建分支B
直接从分支A切出新分支B,执行命令:git checkout -b B A这样分支
B就完整继承了A的所有改动,可以正常在上面继续开发。A被squash merge到main后,同步分支B
由于squash merge会把A的所有提交压缩成一个全新的提交放到main上,A的原始提交历史和main是完全独立的。如果直接合并main到B,Git会误判A的改动是未合并的新内容,导致冲突或重复提交。正确的做法是对B执行变基操作:- 切换到分支
B:git checkout B - 拉取远程最新的
main分支:git fetch origin main - 将
B变基到最新的main上:git rebase origin main
过程中如果遇到冲突,手动解决冲突后执行
git add .,再用git rebase --continue继续变基,直到完成。- 切换到分支
后续合并B到main
变基完成后,B的提交历史会基于最新的main重新排列,此时无论是用普通合并还是squash merge将B合并到main,都不会出现重复提交或不必要的冲突。
注意:如果有其他团队成员也在操作分支
B,变基后需要执行git push -f origin B强制推送,操作前务必和团队成员沟通,避免他人的本地提交丢失。
内容的提问来源于stack exchange,提问作者Arnoud van der Leer
相关产品推荐
相关产品推荐

