You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拉取其他分支变更且不将其纳入当前Pull Request

同步其他分支变更且不污染PR提交记录的操作方法

直接执行merge把目标基线分支(通常是main、develop这类公共主分支)合并到个人开发分支时,会生成合并提交,同时把目标分支的所有历史提交串入你个人分支的提交链,提PR时Git会把所有目标分支上不存在于PR目标分支的提交都列出来,就会出现你遇到的PR夹带大量非本人提交的问题。

标准操作流程(基于rebase,提交历史最干净)

  • 先拉取远端仓库最新的目标基线分支代码,不需要切到对应分支,直接执行fetch即可:
    git fetch origin <你要同步的目标分支名,比如main>
  • 切换到你的个人开发分支:
    git checkout <你的个人开发分支名>
  • 执行变基操作,把你个人分支上所有自研的提交,整体平移到最新的目标分支提交节点之后:
    git rebase origin/<你要同步的目标分支名,比如main>

变基过程中如果出现代码冲突,正常手动解决冲突后,执行git add <已解决冲突的文件路径>,再执行git rebase --continue即可,重复这个流程直到rebase完成。如果中途想放弃变基,执行git rebase --abort就能回到变基前的状态。

  • 变基完成后推送到远端个人分支即可,因为rebase改写了本地提交历史,推送时需要加强制参数:
    git push -f origin <你的个人开发分支名>
    注意:强推操作仅能在你自己独占使用的个人开发分支上执行,多人共用的公共分支绝对禁止强推,会覆盖其他人的提交记录。

操作完成后,你的个人分支已经完整同步了目标分支的所有最新代码,同时提交历史里你的自研提交全部排在目标分支最新提交的顶端,提PR时Git只会识别到你自己新增的那部分提交,不会夹带目标分支的原有提交。

误执行merge后的补救方案

如果你已经把目标分支merge到了个人分支,导致PR夹带大量无关提交,可以按以下步骤清理:

  • 执行git log查看提交记录,找到你在个人分支上开始开发、还没执行那次错误merge之前的最新提交哈希值
  • 执行软重置,把分支指针挪回这个提交节点,你写的所有代码改动都会保留在工作区,不会丢失:
    git reset --soft <刚才找到的提交哈希值>
  • 把你自己的代码改动重新暂存、提交,此时本地分支就只剩你自己的自研提交了
  • 再按照上面的rebase流程同步目标分支的最新代码,强推到远端个人分支后,PR里的多余提交就会被清理干净。

内容的提问来源于stack exchange,提问作者Jordonez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:36:26