progit 笔记 01 - 了解 Git
本部分主要介绍了 Git 的逻辑、特点、处理文件的方式、工作流程以及基本的配置。
Git 基础
Git 直接记录快照(而非差异比较
每次提交更新,或在 Git 中保存项目状态时,Git 对当时的全部文件制作一个快照并保存这个快照的索引。如果文件没有修改,Git 将不再重新存储该文件,而是保留一个指向之前存储的文件的链接。Git 对待数据更像是一个 快照流
近乎所有操作都是本地执行
Git 的绝大多数操作都只需要访问本地文件和资源,本地磁盘上有项目的的完整历史。如果想要查看当前版本和一个月前的版本之间的修改,Git 会查找一个月前的文件做一次本地的差异计算,而不是由远程服务器处理。
Git 保证完整性
Git 中的所有数据在存储前都计算校验和,然后以校验和来引用。Git 使用 SHA-1 散列(hash,哈希)作为计算校验和的机制。Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
Git 一般只添加数据
Git 操作一般只往 Git 数据库中增加数据,很难让 Git 执行任何不可逆操作,或者清除数据。
Git 的三种状态
Git 有三种状态:已提交(committed)、已修改(modified)、和已暂存(staged)。
- committed: 表示数据已经安全的保存在本地数据库中
- modified: 表示修改了文件,但还没有保存到数据库中
- staged: 表示对一个已修改的文件的当前版本做了标记,使之包含在下次提交的快照中
Git 项目的三个工作区域:Git 仓库、工作目录以及暂存区域。
- Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。从其他计算机克隆仓库时,拷贝的就是这里的数据
- 工作目录是对项目的某个版本独立提取出来的内容,从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供使用或修改
- 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时也被称作“索引”
基本的 Git 工作流程:
- 在工作目录中修改文件
- 暂存文件,将文件的快照放入暂存区域
- 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录
初次运行 Git 前的配置
Git 自带一个 git config
的工具来帮助控制 Git 的外观和行为的配置变量,这些变量存储在三个不同的位置:
/etc/gitconfig
文件:包含系统上每一个用户以及他们仓库的通用配置。如果使用带有--system
选项的git config
时,它会从此文件读写配置变量~/.gitconfig
或~/.config/git/config
文件:指针对当前用户。可以传递--global
选项让 Git 读写此文件- 当前使用仓库的 Git 目录中的
config
文件(就是.git/config
):针对该仓库
用户信息
安装完成 Git 后做的第一件事就是设置用户名称与邮件地址。每一次 Git 提交都会使用这些信息,并且会写入到每一次提交中,不可更改。
1
2
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
如果使用了
--global
选项,那么命令只需要运行一次,以后 Git 都会使用这些信息。如果需要针对项目使用不同的用户名称与邮件地址,可以在项目目录下运行没有--global
选项的命令来配置。
文本编辑器
配置默认文本编辑器,Git 需要输入信息时会调用它。如果未配置,Git 会使用操作系统默认的文本编辑器,通常是 Vim。如果想使用 Emacs:
1
$ git config --global core.editor emacs
检查配置信息
如果想要检查配置信息,可以使用 git config --list
命令来列出所有 Git 当时能找到的配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
可能会出现重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如从 /tec/gitconfig
与 ~/.gitconfig
)。这时 Git 会使用它找到的每一个变量的最后一个配置。
可以通过 git config <key>
来检查 Git 的某一想配置
1
2
$ git config user.name
John Doe
获取帮助
有三种方法找到 Git 命令的使用手册:
1
2
3
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
例如获取 config
命令的帮助手册
1
$ git help config