如何从feature分支发PR,仅包含自身变更且排除master分支内容?
解决Pull Request包含多余合并提交的问题
方法一:交互式变基清理提交记录
- 切换到你的功能分支:
git checkout feature/test
- 拉取最新的
develop分支,确保本地基准分支是最新状态:
git checkout develop git pull origin develop git checkout feature/test
- 以
develop为基准执行交互式变基:
git rebase -i develop
- 在弹出的编辑器中,找到那些从
master合并过来的多余提交,将它们行首的pick改为drop(或直接删除整行),只保留你自己的提交记录。保存并退出编辑器。 - 若变基过程中出现冲突,解决冲突后执行:
git add . git rebase --continue
如果需要放弃变基,执行:
git rebase --abort
- 变基完成后,强制推送到远程仓库(因为变基修改了提交历史):
git push origin feature/test --force
方法二:创建新分支挑选目标提交
- 确保本地
develop分支是最新的:
git checkout develop git pull origin develop
- 基于最新的
develop创建一个干净的新分支:
git checkout -b feature/test-clean develop
- 查看原
feature/test分支的提交记录,找到你自己提交的哈希值:
git log feature/test
- 将你自己的提交逐个挑选到新分支上:
git cherry-pick <你的提交哈希1> <你的提交哈希2>
遇到冲突时,解决后执行:
git add . git cherry-pick --continue
放弃挑选则执行:
git cherry-pick --abort
- 将新分支推送到远程:
git push origin feature/test-clean
- 用这个新分支重新发起Pull Request到
develop,原分支可后续按需删除。
注意事项
- 若该功能分支有其他协作者,强制推送会破坏他人的本地工作副本,这种场景下更推荐使用方法二。
- 操作前建议备份原分支,避免数据丢失:
git checkout feature/test git branch feature/test-backup
内容的提问来源于stack exchange,提问作者jramirez
相关产品推荐
相关产品推荐

