成为git砖家(3): Pro Git第一章《起步》

0. 起步

本篇 blog 对应到 Pro Git 第二版的《起步》这一章。
在这里插入图片描述

1. git存储文件快照,不存储文件差异

在这里插入图片描述
在这里插入图片描述
解释:

  • 对于 version1, git 和其他基于 delta 的版本控制系统, 都是添加 File A, File B, File C, 没区别;
  • 对于 version2, File B没变化,File A和File C有变化,基于delta的版本控制系统,记录的是File A的delta、File C 的delta, git 则记录新的 A1, C1 文件, 而文件 B 由于没变化,因此存储一个指向文件B的指针。

2. git通过哈希值索引文件

git 在跟踪文件的时候,首先根据文件内容计算出 SHA-1 散列,是一个40位的十六进制数字。换言之, git 并不根据文件名字或内容索引, 如果两个文件名字或内容一致, 但是计算出的 SHA-1 不同, 那么索引也是不同的; 对于同一个文件,在version1的时候 和 version2 的时候文件内容有变化, 那么 sha-1 会变化, version2 的时候会使用新的 sha-1 来索引它。

在同一个目录下,不可能存在两个同名文件;如果两个文件 file1 和 file2 文件内容一致, 但是位于不同目录下,这是可能的,此时他们的 blob 对象 sha-1 相同,但是 tree 对象的 sha-1 不同。

这意味着对于 git 的操作, 几乎只往 git 数据库中添加数据。

在这里插入图片描述

3. working area, staging area, .git directory, remote 的关系

在这里插入图片描述

  • working area: 修改了文件后,如果文件被git追踪过,那么它处于 modified 状态; 执行 git add 会让文件进入到 staging area; 也可从 .git 目录恢复文件,使用的是 git checkout <file> 命令
  • staging area: 被 git add 的文件处于 staging area, 当执行 git commit 时, 是把 staging area 的东西,提交到 .git 目录。也可以把 staging area 的文件恢复成和 .git 目录中(HEAD)一样, 使用的是 git reset <file>命令, 或者用 git restore --staged <file> 命令。 但是注意,这样只是把 staging area 的修改挪到了 working area。
  • .git directory: git 本身是分布式存储, .git 目录存储了完整的历史记录, 是一个数据库。
  • remote: git 是分布式版本控制系统,remote则相当于是不同的分布式节点之间的一个中转站, 也可以当作是另一个分布式节点。使用 git push 推送本地分支到远程, 使用 git fetchgit pull 拉取远程分支的更新, 使用 git clone 执行初次的代码克隆。

在这里插入图片描述

4. 安装 git

对于 macOS:

brew install git # 安装最新版 git
brew install git-gui # 安装 gitk

5. 查询 git 命令帮助文档

5.1 web 网页形式查询完整帮助说明

git help <命令> --web
# 如:查询 rebase 命令:
git help rebase --web

在这里插入图片描述
在这里插入图片描述

5.2 简短的帮助文档

git <命令> -h
# 如:查询 rebase 命令基本用法
git rebase -h

在这里插入图片描述
再比如 git add -h, 也提供了很多眼花缭乱的选项,目前个人只用过 git add .git add <file>, git add <dir>, git add -p <file> 这几种:
在这里插入图片描述

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值