-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
概述
1. 快照
Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
2. 三种状态
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。
已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
- Git 仓库是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
- 工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
- 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。
3. 快照、分支、HEAD的关系
借用《Pro Git》的一张图
所以,快照是每次git commit就会产生一个的;分支一般会有不一样的快照,但是合并之后是有一样快照的;HEAD一般是指向上一次提交的快照,且是下一次提交的父结点,我们可以通过git reset和git checkout来移动,git reset会移动 HEAD 分支的指向,而 git checkout则移动 HEAD 自身。
HEAD指向下一个提交(commit)的基点。
参考
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
