git 如何工作

尽管 Linus Torvalds 将 git 定位为:“傻瓜式的内容跟踪工具”,但它对不熟悉版本控制的朋友来说,还是过于复杂

所以我们需要先在概念上大概了解,git 是如何工作的

补丁

多数版本控制系统,使用补丁来纪录内容的改动。

当你修改了文件内容,版本控制系统会比较修改后的内容和原来的内容,并使用补丁纪录下来。 无论是查看版本之间的变化,或者需要回溯原来内容,都需要使用补丁中的内容

git 对象

工作树

git将工作目录称为:工作树

索引

工作树的快照,无论是添加、删除文件,或者对文件内容进行修改,都需要提交到索引。git只跟踪被索引的内容

将改动提交到索引,意味着建立一个快照

版本库

存储工作树的各种版本

工作树中只保存当前内容,各种版本通过补丁的形式存储在版本库中

版本名称

git可以使用“版本ID”和“版本标签”作为版本名称

版本ID自动生成,版本标签用git tag命令指定

操作级别

git可以在四种级别上实现版本控制:

改动纪录

改动了文件内容,提交到索引,但未提交到版本库

该级别的常见操作有:add diff

版本纪录

改动被提交到版本库后,就成为一个新的版本

该级别的常见操作有:commit log tag show reset

其中reset、以及分支操作,需要在commit之后,add之前,没有待提交改动纪录的情况下进行

分支

分支为该主线上的系列版本

版本库

协同工作时,需要合并项目成员的版本库

该级别常见的操作有:clone pull push