- Published on
git merge + squash
- Authors
- Name
- Shelton Ma
1. 使用 git merge --squash(推荐方式)
将 feature 分支 squash 成一个 commit 再合并到主分支, --squash
会把多个 commit 合并为 一个暂存的变更(staged changes),但不会自动生成 commit。可以手动写 commit message,清晰记录变更
git merge --squash
不会保留分支合并关系,它只是把更改合并,不保留历史。
# 1. 切到主分支(目标分支)
git checkout main
# 2. squash 合并 feature 分支到当前分支(main)
git merge --squash feature/my-feature
# 3. 提交为一个新的 commit
git commit -m "feat: add my feature"
# 4. (可选)推送到远程
git push origin main
2. 先 rebase squash,再正常 merge(常见于 PR 前整理历史)
# 在 feature 分支上,把多个 commit 合并成一个
git checkout feature/my-feature
git rebase -i main
# 在弹出窗口中,把你要 squash 的 commit 改为 `s` 或 `squash`
# 然后回主分支
git checkout main
git merge feature/my-feature # 如果已经是一个 commit 就不用 --squash 了