Git总结

2019年11月26日
Git总结插图

本文出自明月工作室:https://www.freebytes.net/it/git-zongjie.html

git目录

每个项目都有一个 git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆 镜像仓库的时候,实际拷贝的就是这个目录里面的数 据。 从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。 

基本的 Git 工作流程

  1. 在工作目录中修改某些文件。
  2. 对这些修改了的文件作快照,并保存到暂存区域。
  3. 提交更新,将保存在暂存区域的文件快照转储到 git 目录中。所以,我们可以从 文件所处的位置来判断状态:如果是 git 目录中保存着的特定版本文件,就属于已提交状 态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

对于任何一个文件,在 Git 内都只有三种状态:已提交 (committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存 的清单中。

git 中最常用的三个指令

  1. git add
  2. git commit
  3. git push

git add实际上包含了两个指令——

  1. git hash-object -w [文件]
    该指令将文件保存为git对象,放入objects目录中,并且生成一个hash值,作为该文件的文件名。
  2. git update-index –add –cacheinfo [文件权限] [文件的hash值] [文件名]
    该指令将文件放入暂存区
此图像的alt属性为空;文件名为image-1-293x300.png

暂存区保留本次变动的文件信息,等到修改了差不多了,就要把这些信息写入历史,这就相当于生成了当前项目的一个快照(snapshot)。所谓快照,就是保存当前的目录结构,以及每个文件对应的二进制对象。项目的历史就是由不同时点的快照构成。Git 可以将项目恢复到任意一个快照。快照在 Git 里面有一个专门名词,叫做 commit,生成快照又称为完成一次提交。

暂存区保留本次变动的文件信息,等到修改了差不多了,就要把这些信息写入历史,这就相当于生成了当前项目的一个快照(snapshot)。所谓快照,就是保存当前的目录结构,以及每个文件对应的二进制对象。项目的历史就是由不同时点的快照构成。Git 可以将项目恢复到任意一个快照。快照在 Git 里面有一个专门名词,叫做 commit,生成快照又称为完成一次提交。

git commit实际包含两个指令——

  1. git write-tree
    该指令将当前目录结构保存为git对象,在objects中生成对象文件,以hash值为名。对象中保存目录结构信息以及目录中每个文件对应的二进制对象信息。
  2. git commit-tree
    命令用于将目录结构对象写入版本历史,生成快照。

.git/refs/heads文件夹中存有分支文件,比如master

Git总结插图(1)

把快照的hash值写入master文件,就会使得master分支指向该版本。

下一篇文章Git命令大全