GIT的历史查看
git log [branch]/[commit hash]/[tag] 显示某个分支/提交/标签的历史提交信息的概要
git log a..b 显示a-b演进中的历史信息
加参数-p可以查看详细的修改信息
git show [branch]/[commit hash]/[tag] 显示最后一次提交的详细信息
变量HEAD表示当前正在处理的分支,如果是多路合并HEAD^N表 示第N个祖先,HEAD~N表示上溯N辈的祖先
git grep "keyword" [branch]/[commit hash]/[tag] 过滤查找相应的关键字,支持grep的各种选项
GIT的对象数据库
git 使用4种类型的对象来管理系统
git cat-file 可以用来查看相应的文件,-t用来列出对象的类型,-p 用来打印对象
使用git show可以得到160位的hash值,这个值表示一个commit对象
- commit对象会指向一个tree对象,即在历史记录中当前结点的tree目录的镜像;也会指向父母(parent)commit,这是为了和之前的commit建立关联。
- tree对象用于显示一个目录的状态,tree对象中包含了blob对象和子目录对象。
- blob对象包含的是文件的数据。
- 每个分支的HEAD会存储在.git/refs/heads中。同时,当前所在分支的头部会存储在.git/HEAD中。
GIT的索引文件
索引文件的作用参见另两篇文档,用引用的话来说:
位于./git/index,可以使用命令git ls-files --stage 来查看,对于列出的hash用git-catfile查看,可以得到最新的修改
因此,git add的作用就是创建一个blob文件来记录最新的修改代码,并且在index file里添加一个到此blob的链接