Published on

git merge + squash

Authors
  • avatar
    Name
    Shelton Ma
    Twitter

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 了