官方文档:https://git-scm.com/docs

Git 的关键词是:分布式、版本控制,但其实 Git 是一个文件系统。每个 Client 都会存储一份完整的数据。

Git 是一种简单的 key-value 文件存储系统,它的的 key 是用的是 SHA-1 算法,value 是二进制文件,特点是占内存小。

Git 的工作空间:

  1. 先在 working directory 中写代码
  2. 然后使用 git add . 提交文件到 stage 中
  3. 再然后使用 git commit -m ‘commit msg’ 提交到 local git repository 中

image.png

在使用 git init 命令初始化一个空的 repository,它的目录结构是这样:
image.png
在添加了一个 hello.txt 文件后,在 objects 目录中会新增一个目录和文件分别是 55 和 7db03de997c86a4a028e1ebd3a1ceb225be238,这其实是 Git 对内容进行 SHA-1 后的一个长度 40 的值,和时间以及其他都无关系,这样的好处是它只要存一份就行了,其它的信息记录在 index 文件中,Git 截取了前 2 位作为目录,后 38 位作为文件名。
image.png
image.png
image.png

新增了一个 hello2.txt 的文件,内容还是 Hello World,可以看到 objects 下不变,但是 index 文件新增了信息。
image.png
image.png
git commit 后,会生成一个快照,我们可以回到任意一个快照中,这这就是前面说的,Git 是一个文件系统,key 是 Commit ID,value 是二进制文件:
image.png

branch 的切换,就是 Head 指针的移动。

Git 常用命令

常用的命令也就 10 个左右,

git rm —cached # 将文件从 stage 中移除