偶然发现哈佛大学的关于git的说明,帮助我理解了很多东西,所以想把里面的一些我认为挺重要的概念拿出来记录一下
首先是几个基本概念
一个版本库由以下几方面组成:
- 一组提交对象(commit objects)
- 一组指向提交对象的头引用(HEAD)
一个提交对象由以下几方面组成:
- 一系列反映项目在特定时间点的状态的文件
- 指向父提交对象的引用
- 一个根据当前提交的文件内容计算出来的40个字符的SHA1名称。
git的版本控制的理念就是构建一副由提交对象组成的图
一次提交发生的事情
- git add 将文件添加到版本控制当中
- git commit 创建一个commit对象
- 新的commit对象以HEAD所指对象作为父commit对象
- HEAD指针指向新的commit对象
git commit -a会将所有有改动的文件添加(不包括新的文件,新的文件需要git add
)