指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
git 使用 squash merge
🔹 1. 什么是 squash merge

squash merge 是 Git 合并的一种方式:

  • 将一个分支(通常是 feature branch)上的 多个提交 合并成 一个新的提交
  • 新提交的作者默认是执行 merge 的人
  • 合并完成后,master(或目标分支)上只会看到这一个 commit

命令示例:

git checkout master
git merge --squash feature-branch
git commit -m "Add new feature" // 如果需要保留原作者信息,可以 git commit --author="Original Dev <dev@example.com>" -m "Add new feature"

🔹 2. 特点
特点说明
提交数feature-branch 的多个提交合并成一个新的 commit
作者信息默认是执行 merge 的人;可用 --author="..." 保留原作者
历史整洁master 上不会有很多小提交,提交历史更简洁
保留改动所有 feature-branch 的改动都会包含在新 commit 中
feature-branch 不变原分支的提交依然存在,不受影响

🔹 3. 使用场景
  • 提交历史需要整洁:例如 master 或 main 分支上不希望有每个小提交
  • 功能完成后合并:把一整个功能模块作为一个 commit 提交到主分支
  • 临时修复或小功能:多个零散提交合并成一个完整的逻辑提交

⚠️ 注意:如果团队希望保留每个小提交的作者信息或历史,不适合使用 squash merge


🔹 4. 和普通 merge 对比
对比项普通 mergesquash merge
提交数保留 feature-branch 的每个提交所有提交合并成一个新的 commit
历史完整性历史完整,可追溯每个小提交历史压缩,只保留一个 commit
作者信息保留每个 commit 的原作者默认是执行 merge 的人,可手动指定 author
生成 merge commit会生成一个 merge commit不生成 merge commit(除非手动)
适用场景协作开发,保留完整历史发布或整合功能,保持 master 历史干净

🔹 5. 总结建议
  • 保留原始提交历史 → 用普通 merge
  • 希望 master 干净整洁 → 用 squash merge,并在需要时指定作者