合并GitHub PR后,如何将本地Git提交历史调整为A-B-B'-C-D?
问题:如何将PR合并后的提交B'整合到本地原有提交序列中?
本地初始Git提交历史:
A-B-C-D (tip)
我希望为提交B、C、D分别在GitHub上创建Pull Request(PR)。针对提交B,执行了以下操作:
git checkout B~1 git checkout -b pr-B git cherry-pick B git push
成功创建包含提交B的PR后,PR收到更改请求,我添加了提交B',此时提交历史变为:
A-B-C-D \-B'
推送更改并合并PR后,推测远程历史变为:
A-B-B'
希望本地提交历史变为:
A-B-B'-C-D
请问能否实现?具体该怎么做?
解决方案
完全可以实现,具体操作步骤如下:
拉取远程合并后的最新代码
先切换到你的主分支(比如main或master),拉取远程合并后的内容,确保本地主分支同步到A-B-B'的状态:git checkout main git pull将原有提交C、D Rebase到B'之后
切换到包含A-B-C-D的本地分支(假设是你原来的开发分支,比如dev),执行rebase操作,把C、D这两个提交“搬移”到B'的后面:git checkout dev git rebase main- 如果过程中出现冲突,Git会暂停rebase,你需要手动解决文件冲突。
- 冲突解决后,执行
git add <冲突文件>标记冲突已解决,然后继续rebase:git rebase --continue - 重复上述冲突处理步骤,直到rebase完成。
确认最终历史
完成后,查看分支历史就会变成你想要的A-B-B'-C-D结构:git log --oneline
注意:如果这个包含C、D的分支已经推送到远程,且有其他团队成员在协作,强制推送前要和团队沟通,避免影响他人工作。强制推送命令为
git push -f(仅在个人分支或确认无冲突场景下使用)。
内容的提问来源于stack exchange,提问作者mvc
相关产品推荐
相关产品推荐

