Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git 模型 #54

Open
coconilu opened this issue Aug 14, 2018 · 0 comments
Open

git 模型 #54

coconilu opened this issue Aug 14, 2018 · 0 comments

Comments

@coconilu
Copy link
Owner

coconilu commented Aug 14, 2018

概述

1. 快照

Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。

2. 三种状态

Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。
已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。

  1. Git 仓库是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
  2. 工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  3. 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’',不过一般说法还是叫暂存区域。

3. 快照、分支、HEAD的关系

借用《Pro Git》的一张图

reset-checkout

所以,快照是每次git commit就会产生一个的;分支一般会有不一样的快照,但是合并之后是有一样快照的;HEAD一般是指向上一次提交的快照,且是下一次提交的父结点,我们可以通过git resetgit checkout来移动,git reset会移动 HEAD 分支的指向,而 git checkout则移动 HEAD 自身。

HEAD指向下一个提交(commit)的基点。

参考

Pro Git

@coconilu coconilu mentioned this issue Jun 23, 2020
68 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant