Git 的工作原理——快照、分支与提交历史 · 思维导图
Git 的工作原理——快照、分支与提交历史. 可编辑的思维导图,以彩色分支、子主题和曲线连接呈现想法。 曲线表示联系;只有方向重要时才使用箭头。
Git 是一套基于快照的版本控制系统:每一次提交都是仓库的一张完整画面,并链接到它的父提交,而分支不过是沿着提交历史移动的指针。
Git 的工作原理——快照、分支与提交历史 · 思维导图
The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.
如何阅读这张思维导图
- 从中心主题开始,沿着彩色分支探索相关想法。
- 曲线表示联系;只有方向重要时才使用箭头。
Working tree
这一分支汇集 “Developer edits files in the working directory”.
Stage
这一分支汇集 “git add moves changes into the staging area”.
Commit history
这一分支汇集 “A commit is a snapshot of the whole repository plus metadata — author, message, timestamp. Git only stores the delta against the parent, so history stays small.”, “Git stores the commit with a pointer to its parent”, “The branch pointer moves to the new commit”.
Share
这一分支汇集 “The commit graph is what makes Git a distributed tool: everyone has the full history locally, and ‘push’ and ‘pull’ only exchange the missing pieces.”, “Remote repository records the new history”, “History is shared and up to date”.
Resolve conflicts
这一分支汇集 “Git merges divergent histories automatically when the changes touch different files or lines. Only overlapping edits produce a conflict.”, “Merge conflict — developer resolves it manually”.
跨分支联系
一次提交是一张链接到父提交的完整快照,这让提交历史成为一张只能追加的图。
分支是指向某次提交的指针,而不是装改动的容器——正因如此,创建和切换分支才这么廉价。
暂存是刻意插入的中间一步,让你能决定一次提交里装些什么。
Git 是分布式的:每个人本地都握有完整的提交历史,push 和 pull 只交换缺失的那部分。
冲突是例外而不是常态——一旦发生,由人来明确地解决它。
Key relationships and takeaways
- 一次提交是一张链接到父提交的完整快照,这让提交历史成为一张只能追加的图。
- 分支是指向某次提交的指针,而不是装改动的容器——正因如此,创建和切换分支才这么廉价。
- 暂存是刻意插入的中间一步,让你能决定一次提交里装些什么。
- Git 是分布式的:每个人本地都握有完整的提交历史,push 和 pull 只交换缺失的那部分。
- 冲突是例外而不是常态——一旦发生,由人来明确地解决它。
When to use this visual
- 向一支只把 Git 当作一串命令来用的团队讲清楚快照模型。
- 用指针模型来解释分支、合并与冲突,而不是靠背命令。
- 在评审团队的提交与分支工作流时,把讨论落回到提交历史真实的结构上。
运作方式
调整中心主题
根据项目或课程修改中心主题的名称。
扩展分支
编辑想法并添加示例或注释。
连接相关想法
绘制跨分支连接;只有方向重要时才使用箭头。
常见问题
Git 是什么,它和其他版本控制有什么不同?
Git 是一套基于快照的分布式版本控制系统。每一次提交存下的是仓库的一张完整画面,外加一个指向父提交的指针,而不只是一份文件改动清单。因为每个开发者本地都有完整的提交历史,大多数操作都能离线完成,协作也就变成了与远程仓库交换提交这件事。
Git 里的分支是什么?
分支是一个可移动的、指向某次提交的指针。当你在一个分支上提交时,指针前进到新的提交;提交本身并不知道、也不在乎自己落在哪个分支上。这就是创建分支为什么是瞬时的,也是切换分支为什么只改变工作区展示的是哪一张快照。
Git 为什么要有暂存区?
暂存区让你有意识地搭出一次提交。你可以改好几个文件,只把属于同一件事的那些放进暂存,然后只提交这一份选择——把无关的工作留在未提交的状态。工作区、暂存区和仓库是三种彼此独立的状态,而这正是图中画出的那条流水线。
Git 是怎么解决合并冲突的?
当两个分支改的是不同的文件、或者不同的行时,Git 会自动合并。当它们改的是同样的几行时,Git 猜不出哪个版本才对,于是标出冲突,交给人来选。冲突是一次决策,不是一次失败——正因如此,图解才把它导向一个明确的解决步骤,然后才轮到共享提交历史。
在 QueryChart 中编辑此思维导图
在可编辑画布中打开思维导图。移动想法、添加分支并绘制连接。