Post

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 仓库目录中。有时也被称作“索引” Figure 1-6.jpeg

基本的 Git 工作流程:

  1. 在工作目录中修改文件
  2. 暂存文件,将文件的快照放入暂存区域
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 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
This post is licensed under CC BY 4.0 by the author.