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

如何高效压缩存在大量无关提交的feature分支且保留同事提交记录

高效合并Feature分支自有提交为单个提交的方案

方案1:软重置+重新提交(通用场景,无冲突风险)

适合需要保留feature分支独立存在、仅把自有功能提交压成单个的需求,全程不需要逐个处理历史提交:

  • 先切换到目标feature分支,确认工作区无未提交变更:
    git checkout feature/你的功能分支名 && git status
  • 找到feature分支和上游开发分支(示例默认分支名为dev,可替换为你实际的开发分支名)的最新公共基准提交:
    git merge-base dev HEAD
    执行后会输出一串commit hash值,复制保存该值。
  • 执行软重置到上述基准节点:
    git reset --soft 刚才复制的commit hash
    此时你在feature分支上所有的代码变更,包括中间合并开发分支产生的差异、你自己的细碎提交修改,都会被统一归集到暂存区。
  • 直接提交汇总后的变更即可:
    git commit -m "feat: 完整实现XX功能(可替换为你需要的提交说明)"
    该方案不会修改开发分支的任何提交记录,同事的提交会完整保留,仅把你当前feature分支的所有功能变更合并为单个提交。

方案2:squash合并(适合直接合入开发分支的场景)

如果你当前的最终目标是把feature分支合入开发分支,同时把自有变更压成单个提交,可以直接用squash合并命令:

  • 切换到开发分支并拉取最新代码:
    git checkout dev && git pull
  • 执行squash合并,将feature分支的差异全部归集到暂存区:
    git merge --squash feature/你的功能分支名
  • 提交合并结果即可:
    git commit -m "feat: 完整实现XX功能(可替换为你需要的提交说明)"
    该方案会把feature分支的所有功能变更合并为单个提交提交到开发分支,开发分支上原有的所有提交(包括同事的提交)都会完全保留,不会产生任何修改。

注意事项

  • 操作前建议先给当前feature分支打临时标签做备份,避免操作失误丢失历史提交:git tag feature_temp_backup,如果需要恢复,执行git reset --hard feature_temp_backup即可还原到操作前的状态。
  • 如果你操作前已经把feature分支推送到过远程仓库,操作完成后需要添加-f参数强制推送本地分支到远程:git push -f origin feature/你的功能分支名,如果是多人协作的公共feature分支,需要提前和其他协作者同步操作结果,避免协作者本地分支和远程分支产生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:27:02