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

如何在夹杂同事提交的个人分支上squash自身所有提交?

仅合并个人分支中自己的提交(夹杂他人提交时)

方法一:通过Cherry-pick一次性合并所有个人提交

这个方法最直接,直接提取你所有提交的改动合并成一个新提交:

  • 先基于最新的main分支创建干净的新分支:
    git checkout -b my-branch-squashed main
  • 提取原个人分支(比如my-branch)中所有属于你的提交,将改动应用到新分支但不自动提交:
    git cherry-pick -n $(git log --author="你的邮箱或用户名" --reverse my-branch --not main)

    说明:--reverse确保提交按时间从早到晚应用,减少冲突概率;--not main排除已在main分支中的提交

  • 所有改动应用完成后,手动提交合并后的内容:
    git commit -m "你的合并提交信息(例如:Feature X 开发完成)"

方法二:交互式变基手动选择要合并的提交

如果想保留部分个人提交的拆分逻辑,仅合并重复小提交,可使用此方法:

  • 先列出你在个人分支中所有自己的提交(按时间从早到晚排序):
    git log --author="你的邮箱或用户名" --reverse my-branch --not main
    记下列表里最早的那个提交的哈希值(比如a1b2c3)
  • 执行交互式变基,从该最早提交的父节点开始:
    git rebase -i a1b2c3~1
  • 在弹出的编辑器中:
    • 保留第一个作为基础的提交(前面的pick不动)
    • 把后续所有属于你的提交前的pick改成squash(或缩写s)
    • 同事的提交保持pick不变,不要修改
  • 保存并退出编辑器,Git会自动将你标记的提交合并到第一个提交中,同事的提交会原样保留

注意事项

  • 操作前建议备份原分支(比如git branch my-branch-backup),避免失误丢失提交
  • 若遇到冲突,按Git提示解决后:方法一执行git add .再提交;方法二执行git rebase --continue
  • 命令中的my-branch替换为你的实际分支名,你的邮箱或用户名要与Git配置一致(可通过git config user.email查看)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:42:44