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

Git分支出现非自身提交的原因及解决方法咨询

问题原因分析

你遇到的情况是因为设置git config pull.rebase true后,git pull会执行fetch + rebase操作,而非默认的merge。如果远程的<branch_name>分支已经包含了其他用户合并到master的提交(比如有人把master的更新合并到了这个远程分支),拉取时Git会把你本地分支的提交变基到远程分支的最新提交之上——这就导致那些原本属于master的提交被加入到了你本地分支的历史里。

另外也有可能是你的本地分支基于旧版master,而远程<branch_name>已经同步了master的最新状态,拉取时的rebase操作会把本地分支的基础更新到远程分支的最新版本,自然就带上了master的那些提交。

能否移除这些提交?

完全可以,不用删除分支。这里有两种常用方法:

  • 直接回退到pull前的状态:

    1. 用git reflog查看操作历史,找到执行git pull之前的提交哈希值(比如类似abc123 HEAD@{2}: commit: 我的上次提交的条目)。
    2. 执行git reset --hard <找到的哈希值>,把本地分支强制回退到pull前的状态。
    3. 因为本地分支历史已修改,需要强制推送到远程:git push origin <branch_name> --force(注意如果有其他同事也在这个分支工作,要提前沟通,避免覆盖他们的修改)。
  • 交互式变基删除多余提交:
    如果在pull之后你又做了新的提交,可以用交互式变基删掉多余的master提交:

    1. 同样用git reflog找到pull前的提交哈希,执行git rebase -i <哈希值>。
    2. 在弹出的编辑界面里,把那些不属于你分支的master提交前面的pick改成drop,保存退出。
    3. 完成变基后,执行git push origin <branch_name> --force强制推送。
是否需要删除分支重新开始?

不需要。上面的方法足够修复分支历史,除非你的分支已经和远程分支的历史完全混乱到无法梳理,但这种情况极少发生。直接用回退或变基的方式就能恢复到你想要的状态,没必要重新创建分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:12:11