4.3 融合之道:合并与变基

当你在 feature-login 分支完成了开发,如何把成果带回 master 主分支?这是分支的核心议题。

合并:留存历史真相

合并会创建一个专门的“合并提交”,把两个分支的最新快照和它们的共同祖先进行三方合并。

bash
复制代码
git checkout master
git merge feature-login

结果:会产生一条额外的合并提交。分支的历史轨迹被原封不动地保留,脉络清晰,适合多人协作的公共分支。

变基:追求线性历史

变基的核心思想是:把我的改动,在另一个分支的最新基础上重新“演”一遍。

bash
复制代码
git checkout feature-login
git rebase master

结果:提交历史变成一条完美的直线,没有分叉,非常干净。但要注意:永远不要对已经推送到公共仓库的提交进行变基,因为它通过复制提交来改写历史,会破坏别人的工作基础。

冲突解决:面对分歧的理性对话

当你 mergerebase 时,若两个人改了同一个文件的同一行,Git 就会停下来,请你裁决。

  1. 打开有冲突的文件,你会看到 Git 用 <<<<<<<, =======, >>>>>>> 标记出的两个版本。
  2. 手动编辑文件,保留你想要的内容,删掉这些标记。
  3. 把最终版本添加到暂存区:git add .
  4. 告诉 Git 冲突已解决:
    • 如果是合并,执行 git commit
    • 如果是变基,执行 git rebase --continue