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 之后提交即可,不必先中止再从零开始。