Git中的merge和rebase

说明 Git 中 merge 和 rebase 的区别、各自适用场景,以及它们对历史结构的影响。

#type / concept #status / growing #tech / ops #resource / git

[!info] related notes

merge and rebase

git merge vs git rebase

特性git mergegit rebase
提交历史保留分支历史,产生合并提交线性历史,重写提交历史
冲突处理一次性解决所有冲突逐个提交解决冲突
使用场景功能分支合并到主分支整理提交历史,同步主分支
协作影响对已推送的提交安全不要对已推送的提交使用

Merge 示例

git checkout main
git merge feature/login
# 产生一个合并提交

Rebase 示例

git checkout feature/login
git rebase main
# 将 feature/login 的提交重新应用到 main 之上

什么时候优先用 merge

  • 多人共享同一个功能分支
  • 需要明确保留分支合并点
  • 团队约定禁止改写已经推送的分支历史

什么时候优先用 rebase

  • 你在单人维护功能分支
  • 只是想把当前分支同步到最新 main
  • 希望最终进入 main 的历史尽量线性

这里常见的目标是:先把功能分支 rebase 到最新 main,再让 main 以 fast-forward 方式接住这条分支。fast-forward 本身的定义和判断条件见 Git 中的 fast-forward merge

如果你要执行“先 rebase,再 fast-forward 合并回 main”的具体步骤,直接看 用 Rebase 把功能分支线性合并回 main

创建于 2025/1/1 更新于 2026/5/27