Kc's blog Kc's blog
首页
分类
标签
Timeline
收藏夹
关于
GitHub (opens new window)

kcqingfeng

前端小学生
首页
分类
标签
Timeline
收藏夹
关于
GitHub (opens new window)
  • 实操

  • 技巧

    • Git提交规范参考
    • Git使用手册
    • Markdown使用教程
    • npm常用命令
    • 浏览器的调试
    • nrm详解
    • openvpn安装和使用
    • adb操作记录
    • 谷歌浏览器设置跨域配置
    • nodejs全局代理服务器
    • Git 本地开发分支常见操作指南
    • Git Squash Merge 使用指南
      • huawei 分支
      • dev 分支
      • 1. 切换到公共分支
      • 2. 拉取最新代码
      • 3. squash 合并 dev
      • 4. 查看状态
      • 5. 提交代码
      • 6. 推送远程
      • 当前情况
        • huawei
        • dev
      • 执行
      • 最终结果
      • 1. squash merge 后为什么没有自动 commit?
      • 2. squash merge 会删除 dev 分支吗?
      • 3. squash merge 后还能继续开发吗?
      • 4. squash merge 会产生 merge commit 吗?
      • squash merge
      • 提交代码
      • 推送远程
      • 查看提交图
    • yaml语言教程
    • Git修改分支名
  • github
  • 技巧
kc_shen
2026-05-11
目录

Git Squash Merge 使用指南

# Git Squash Merge 使用指南

# 一、什么是 squash merge

squash merge 是 Git 中一种:

只合并代码,不合并提交历史

的合并方式。

适用于:

  • 个人开发分支
  • 临时功能分支
  • 不希望暴露开发过程
  • 不希望远程出现大量 commit
  • 想保持提交记录干净

# 二、为什么使用 squash merge

假设:

# huawei 分支

A---B
1

# dev 分支

A---B---C---D---E
1

其中:

  • C D E 是自己开发过程中的提交

如果直接:

git merge dev
1

最终:

A---B--------M
     \      /
      C----D----E
1
2
3

远程会看到:

  • 所有开发记录
  • merge commit
  • 分支关系

提交历史会越来越乱。


# 三、squash merge 的效果

执行:

git merge --squash dev
1

最终:

A---B---X
1

其中:

  • X 是一个新的提交
  • C D E 不会进入远程历史

效果相当于:

把 dev 的所有代码压缩成一次提交。


# 四、核心特点

特点 squash merge
合并代码 ✅
合并 commit 历史 ❌
产生 merge commit ❌
提交记录干净 ✅
适合个人开发 ✅

# 五、推荐开发流程


# 1. 切换到公共分支

git checkout huawei
1

# 2. 拉取最新代码

git pull
1

确保本地分支最新。


# 3. squash 合并 dev

git merge --squash dev
1

执行后:

  • 代码会进入暂存区
  • 但不会自动 commit
  • 不会生成 merge commit

# 4. 查看状态

git status
1

会看到:

Changes to be committed
1

说明代码已经进入暂存区。


# 5. 提交代码

git commit -m "新增xxx功能"
1

此时:

  • 会生成一个全新的 commit
  • 不会保留 dev 的历史记录

# 6. 推送远程

git push
1

远程只能看到:

新增xxx功能
1

看不到:

  • dev 分支
  • dev 的 commit
  • merge 历史

# 六、完整操作示例


# 当前情况

# huawei

A---B
1

# dev

A---B---C---D---E
1

# 执行

git checkout huawei

git pull

git merge --squash dev

git commit -m "新增用户功能"

git push
1
2
3
4
5
6
7
8
9

# 最终结果

A---B---X
1

其中:

  • X 包含了 C D E 的所有代码
  • 但不会暴露开发过程

# 七、常见问题


# 1. squash merge 后为什么没有自动 commit?

因为:

git merge --squash
1

只会:

  • 合并代码
  • 放入暂存区

不会自动提交。

需要手动:

git commit
1

# 2. squash merge 会删除 dev 分支吗?

不会。

只是:

  • 复制代码
  • 不影响 dev 分支

# 3. squash merge 后还能继续开发吗?

可以。

dev 分支不会受到影响。


# 4. squash merge 会产生 merge commit 吗?

不会。

这是它最大的优点之一。


# 八、推荐使用场景

适合:

  • 个人开发分支
  • 功能开发分支
  • 实验分支
  • 临时分支
  • 提交记录需要干净的项目

# 九、不推荐直接 merge 的原因

直接:

git merge dev
1

会:

  • 暴露开发过程
  • 出现大量 commit
  • 出现 merge commit
  • 提交记录混乱

尤其多人协作时:

Git 图会越来越复杂。


# 十、推荐命令速查


# squash merge

git merge --squash dev
1

# 提交代码

git commit -m "新增功能"
1

# 推送远程

git push
1

# 查看提交图

git log --oneline --graph
1

# 十一、最佳实践(推荐)

# 更新公共分支
git checkout huawei
git pull

# 合并个人开发代码
git merge --squash dev

# 提交
git commit -m "新增xxx功能"

# 推送
git push
1
2
3
4
5
6
7
8
9
10
11
12

# 十二、总结

方案 是否暴露开发历史 是否产生 merge commit 提交记录
merge 会 会 复杂
rebase 会 不会 较干净
squash merge 不会 不会 最干净

# 十三、结论

对于:

  • 本地个人开发分支
  • 不想提交 dev 历史
  • 希望远程提交干净

最推荐:

git merge --squash dev
1
编辑 (opens new window)
上次更新: 2026/05/11, 8:05:00
Git 本地开发分支常见操作指南
yaml语言教程

← Git 本地开发分支常见操作指南 yaml语言教程→

最近更新
01
Git 本地开发分支常见操作指南
05-11
02
中安日报
04-28
03
openspec使用指南
04-17
更多文章>
Theme by Vdoing | Copyright © 2019-2026 kc shen | MIT License 豫ICP备2024074563号-3
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式