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

如何squash来自不同设备的Git commits?

解决跨设备开发Feature分支后的Commit Squash与Master合并问题

commit的来源设备不会影响squash操作,问题出在操作流程上。以下是两种可靠的解决方案:

方案一:交互式Rebase整理Feature分支历史(推荐)

这种方式能先把feature分支的所有commit合并成一个,再合并到master,保证master历史干净:

  • 拉取远程仓库最新代码:
    git fetch origin
  • 切换到目标feature分支:
    git checkout feature-branch-name
  • 执行交互式rebase,以远程master为基准整理commit:
    git rebase -i origin/master

    编辑器打开后,将第一个commit以外的所有pick替换为squash(或简写sq),保存退出后编辑合并后的commit信息,删除冗余的"Continuing X branch"类内容,编写清晰的功能说明。

  • 若rebase遇到冲突,解决冲突后执行:
    git add .
    git rebase --continue

    如需放弃rebase,执行git rebase --abort

  • 由于修改了commit历史,强制推送更新远程feature分支(用--force-with-lease更安全,避免覆盖他人修改):
    git push origin feature-branch-name --force-with-lease
  • 合并到master:
    git checkout master
    git pull origin master
    git merge feature-branch-name

方案二:直接在Master分支上Squash合并

这种方式跳过整理feature分支,直接将所有修改合并为一个commit到master:

  • 切换到master分支并拉取最新代码:
    git checkout master
    git pull origin master
  • 执行squash合并,不自动提交:
    git merge --squash feature-branch-name
  • 编辑合并后的commit信息并提交:
    git commit -m "feat: 完成[功能名称]开发(合并原feature分支所有修改)"
  • 推送更新远程master:
    git push origin master

注意事项

  • 执行强制推送前,确认没有其他开发者在该feature分支上工作,避免覆盖他人修改
  • 操作前可创建临时分支备份:git checkout -b feature-branch-backup
  • 合并到master前,务必确保feature分支代码经过测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:35:43