Git模型理解
背景
这可能是我第三次学习Git了。每次学习完毕,都是感觉很复杂,当时似乎觉得差不多掌握了,但是时间一长就又糊涂了,每次用git,仅仅使用其提交功能,做一个备份以便安心,其他功能不敢用。
这一次我觉得有希望彻底掌握它,因为我不学习它的命令,而是学习其运作模型,具体操作直接问AI就可以了。就像旅游一样,脑子里只需要有大概的印象和了解地名即可,具体怎么走,交给导航就可以了。
Git模型
极简模型
- 工作区
就是用户可视的、日常工作的普通目录和文件。 - 仓库
存放的是工作区的历史快照。这也是版本管理最核心的价值。一个历史快照称之为一个提交(Commit)。 - 远程仓库
存放在本地也不保险,仓库也可以存放到远程。
仓库模型
- 提交(Commit)
这个是核心概念。表示工作区的一个历史快照。每一个Commit都有一个指针,指向其父节点Commit,表示其来时路。它用一个唯一ID来标记。 - 分支
指向Commit的指针,默认有一个main或者master分支。 - HEAD
一个非常特殊的指针,一个仓库有且只有一个,下一个提交(Commit)就是从HEAD开始的。它通常指向某一个分支,这个分支称之为当前分支,它也可以只指向Commit。 - 标签(Tag)
它也是特殊的指针,与分支和HEAD不同,它是固定指针,一旦指向某个Commit就永远不动了。但是分支和HEAD是自动移动的,有新的提交,HEAD和当前分支就会自动移动到新的提交上。
如果一个Commit没有任何指针指向它(包括其它Commit、Head、分支、标签),就会被垃圾回收。
其他概念
- 暂存区
工作区和仓库之间的一个过渡区域,也可以理解为一个特殊快照。 - 远程仓库缓存
远程仓库和本地仓库之间有一个远程缓存仓库,可以先把远程仓库同步到缓存仓库,这样就可以先查看缓存仓库,避免直接覆盖本地数据。