无需登录 数据私有 本地保存

Git可视化学习器 - 理解分支与合并

11
0
0
0

Git 可视化学习器

交互式理解分支与合并
HEAD → main
图例说明
主分支 main 功能分支 合并提交 HEAD 当前指针
操作日志
常见问题与知识点
什么是 Git 分支?为什么需要分支?

分支(Branch) 是 Git 的核心概念之一。它就像一条独立的开发线,允许你在不影响主线代码的情况下进行实验、开发新功能或修复 bug。

在可视化中,每个分支用不同颜色表示。分支本质上是一个指向特定提交的轻量级指针,创建分支几乎瞬间完成,不占用额外存储空间。

常见工作流:main 分支保持稳定,新功能在 feature 分支开发,完成后合并回 main

什么是合并(Merge)?Fast-forward 合并是什么?

合并(Merge) 是将两个分支的修改整合到一起的操作。

  • Fast-forward 合并: 当被合并分支是当前分支的直接上游时,Git 只需将指针向前移动,不创建新提交。本工具为教学目的,默认创建 --no-ff 合并提交。
  • 三方合并: 当两个分支各有独立提交时,Git 会创建一个新的"合并提交",同时连接两个父提交。

合并提交在图中显示为带金色边框的大节点,它有两个父节点。

HEAD 是什么?它和分支有什么关系?

HEAD 是一个特殊指针,表示你当前所在的位置。通常 HEAD 指向一个分支(如 HEAD → main),表示你正在该分支上工作。

当你提交时,HEAD 指向的分支会随之更新。如果 HEAD 直接指向某个提交(而非分支),这称为"分离头指针"(detached HEAD)状态。

在本工具中,HEAD 始终指向一个分支,用HEAD标签标示。

如何理解 Git 的提交历史图(DAG)?

Git 的提交历史是一个有向无环图(DAG)。每个提交(commit)都包含一个或多个指向父提交的引用。

  • 普通提交: 只有一个父提交
  • 合并提交: 有两个(或更多)父提交
  • 根提交: 没有父提交(仓库的第一个提交)

在可视化中,圆点代表提交,线条代表父子关系。从左到右是时间顺序,上下分布是不同分支。

分支合并后,原来的分支还存在吗?

存在! 合并操作不会删除分支。被合并的分支指针仍然指向原来的提交。你可以继续在该分支上开发,也可以删除它(git branch -d)。

在本工具中,合并后两个分支都保留,你可以看到合并提交同时连接了两个分支的历史。这反映了 Git 的真实行为。

什么是合并冲突(Merge Conflict)?本工具会模拟吗?

合并冲突 发生在两个分支修改了同一文件的同一部分,Git 无法自动决定使用哪个版本时。

本工具专注于分支结构的可视化理解,不模拟文件内容和冲突解决。在实际开发中,你需要手动编辑冲突文件,然后 git addgit commit 完成合并。

理解分支结构是解决冲突的基础——知道代码从哪里来、到哪里去。