首页/开发/Git 与协作速查/git merge --no-commit 预览合并结果
合并变基与冲突71 条

git merge --no-commit 预览合并结果

执行合并但因不满足快进条件而暂停在提交之前,便于先检查自动合并是否引入问题,再决定提交或中止。

Git 与协作速查开发更新于 2026-10-13

merge --no-commit 是什么

git merge --no-commit 让合并在完成文件整合后停在提交之前,把结果留在暂存区里供你检查,确认无误再手动提交,不满意则用 git merge --abort 撤回。它对「合并会不会自动引入问题」这类担心很实用:可以在提交前先看差异、跑一次构建。需要注意在快进场景下要配合 --no-ff 才会真正停下,否则命令会直接快进。适用于所有 Git 客户端。

基本信息

用途在提交前检查合并结果
语法git merge --no-commit --no-ff <分支>
后续动作git commit 提交,或 git merge --abort 中止
关键点快进场景需配 --no-ff 才会暂停
平台任意 Git 客户端

典型使用场景

  • 合并前想先跑一遍构建或测试再决定是否提交
  • 合并自动生成文件,需要人工核对结果
  • 合并后要微调合并结果或补充说明再提交
  • 想在一次提交里同时带上合并结果以外的调整
  • 评审他人分支前先本地合并观察效果
  • 怀疑自动合并会引入问题,用它多留一道人工关口

常用示例

常用示例
git merge --no-commit --no-ff feature/theme   # 停下等待提交
git diff --cached --stat                       # 查看已暂存的合并结果
git diff --cached                              # 逐行检查
git commit -m 'Merge feature/theme'            # 确认后提交
git merge --abort                              # 不想要则中止

合并暂停后的状态

状态含义
已暂存改动合并结果已写入索引,等待提交
MERGE_HEAD仓库处于合并进行中,不能随意切分支
未跟踪文件合并带来但未纳入索引的新文件
核对无误后务必显式提交,否则仓库会留在合并进行中的状态,后续操作容易在错误前提下继续。
预览只验证已暂存的差异,构建或测试仍建议在提交后单独跑一遍,两件事互补而非替代。
暂停状态下如果又想恢复成普通合并流程,可以先检查差异后直接提交;确实不想要这次合并时用 git merge --abort 回到操作前,避免半途留在中间状态。

暂停后的检查顺序

  • git status 确认处于合并进行中且有已暂存改动
  • git diff --cached --stat 看整体规模,再逐文件细看
  • 跑一次构建或关键测试,确认合并结果可用
  • 确认无误后提交;不想要则 --abort 干净退出
暂停时的差异可以用工具逐行查看;如果发现某处自动合并结果不对,直接编辑文件并 git add 之后提交即可,不必先中止再从零开始。

易错点

  • 快进场景下不加 --no-ff,--no-commit 会失效直接快进过去,结果没有停下来
  • 停在暂停状态里误切分支或继续别的工作,容易在错误状态上提交,中断前先 --abort
  • 忘记显式提交会让仓库停留在合并中,之后的命令行为与预期不符
  • 只核对暂存差异就认为没问题,编译与测试仍需单独执行,二者不能互相替代
  • 在暂停状态里直接修改文件却不重新 add,改动不会进入本次合并提交

数据来源与参考

  • Git 官方文档:git-merge(--no-commit)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌