前言
在经过快速入门教程学习,并在工作中使用 Git 约7个月后,想静下心整理一份 Git 的学习笔记,同时学习一些进阶的 Git 使用技巧。我在工作中使用 Git 一般都是在 MacOS 下使用 SourceTree ,配合少量的简单命令行操作,所以一直对 Git 的原理不太清楚。
快速入门
Git 教程 | 菜鸟教程
Git 教程 | 廖雪峰的官方网站
快速入门可以看廖雪峰的教程或者菜鸟教程,这些确实做到了临时看10分钟就能上手使用。
稍微进阶
Learn Git Branching | Git 分支可视化的网页小游戏(非常推荐)
Git recipes | 高质量的 Git 中文教程(非常推荐)
- Git 仓库的裸状态和非裸状态。
- Git 的 Config,可以用来配置 alias,也可以用来在 commit 的时候选择默认打开的编辑器(推荐)。
Git 将配置项保存在三个单独的文件中,允许你分别对单个仓库、用户和整个系统设置。
/.git/config – 特定仓库的设置。
~/.gitconfig – 特定用户的设置。这也是 --global 标记的设置项存放的位置。
$(prefix)/etc/gitconfig – 系统层面的设置。
当这些文件中的配置项冲突时,本地仓库设置覆盖用户设置,用户设置覆盖系统设置。如果你打开期中一份文件,你会看到下面这些:
[user]
name = John Smith
email = john@example.com
[alias]
st = status
co = checkout
br = branch
up = rebase
ci = commit
[core]
editor = vim
你可以用 git config 手动编辑这些值。
缓存区
git add 命令最主要的作用是将工作目录中的更改添加到 Git 的缓存区。缓存区是 Git 特有的功能之一,如果你之前使用的是 SVN(甚至是更古老的 Mercurial),那你可得花点时间理解了。你可以把它理解成工作目录和项目历史中间的缓冲区。缓存区是 Git 三个树状文件结构之一,另外两个是工作目录和提交历史。
缓存允许你把紧密相关的几份更改合并成一份快照,而不是直接提交所有新的更改。也就是说你可以同时进行多个无关的更改,最后分成几次将相关更改添加到缓存区并提交。对于任何版本控制系统来说,保持提交的原子性非常重要,这有利于追踪 bug 以及用最小的代价撤销更改。