Skip to content

git合并

在 Git 中,“合并”(merge)是一个非常核心的操作,用来把两个分支的历史合并到一起,常见于开发流程中如:

  • feature 分支开发完成后合并回 main
  • 从远程分支拉取更新合并到当前分支

👨‍一句话解释:

合并就是把一个分支的改动整合进当前分支。


合并的两种方式

1. Fast-forward 合并(快进式合并)

如果当前分支(如 main)没有新提交,而另一个分支(如 feature)基于 main 开发,Git 只需“快进”指针。

bash
git checkout main
git merge feature

此时 main 会直接向前移动到 feature 的最新提交,不会产生新的合并提交。

特点:

  • 没有冲突
  • 没有合并提交
  • 历史简单直线

2. 非 Fast-forward 合并(真正的合并)

当两个分支各自都有提交时,Git 会创建一个合并提交(merge commit),记录两个分支的共同历史。

bash
git checkout main
git merge feature

特点:

  • 创建一个新的 commit(合并提交)
  • 可以记录两个父分支
  • 可能产生冲突(需要手动解决)

合并冲突

如果两个分支都改了相同的文件的相同部分,Git 无法自动合并,就会产生冲突

解决流程如下:

bash
# 出现冲突后,Git 会提示冲突文件
# 编辑冲突的文件,保留你想要的改动
git add <冲突解决后的文>
git commit  # 完成合并提交(有些情况不需要再手动 commit)

合并 vs 变基(merge vs rebase)

  • git merge:保留分支历史,能看到开发是如何进行的
  • git rebase:让提交历史线性化,更整洁

总结

合并方式是否创建新提交是否保持分支历史推荐使用场景
Fast-forward简单合并,保持线性
非 fast-forward多人协作开发
Rebase否(重写历史)否(线性)保持整洁历史(如 PR 前)