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

为何推送代码时会附带其他贡献者的历史提交?

解决Git推送附带他人历史提交的问题

问题原因

你创建本地分支时,没有基于upstream/newbranchname分支,而是基于当前所在的其他分支(比如main)创建,导致本地分支包含了其他分支的历史提交。后续即使只修改单个文件,提交的基线依然带着无关历史。

解决方案

情况1:未推送本地修改,或可强制推送自己的远程分支

  • 若有未提交的修改,先暂存:
    git stash
    
  • 切换到目标分支:
    git checkout newbranchname
    
  • 将本地分支重置为上游分支的最新状态:
    git reset --hard upstream/newbranchname
    
  • 恢复暂存的修改:
    git stash pop
    
  • 重新提交你的修改:
    git add components/card
    git commit -m "你的修改描述"
    
  • 强制推送到你的远程分支(仅适用于你拥有权限的私有分支,公共分支谨慎操作):
    git push origin newbranchname --force
    

情况2:已推送修改,需要清理历史

  • 查看提交历史,记录你自己的提交哈希值:
    git log --oneline
    
  • 执行交互式变基,基于上游分支清理历史:
    git rebase -i upstream/newbranchname
    
  • 在弹出的编辑器中,将不属于你的提交前的pick改为drop,仅保留你自己的提交,保存并退出。
  • 若出现冲突,解决冲突后执行:
    git add .
    git rebase --continue
    
  • 强制推送清理后的分支:
    git push origin newbranchname --force
    

正确创建跟踪上游分支的方式

下次创建本地分支时,直接基于上游分支创建,避免历史混杂:

git fetch upstream
git checkout -b newbranchname upstream/newbranchname

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:10:17