此文章施工中…

现在让我们来使用上面我们写好的 Git Object 来实现常用的 Git 命令吧.

Spec

我们要实现的命令有这些:

创建仓库:

$ git init [path]
# [path]: 在 [path] 下创建一个包含必要目录结构的 .git 目录, 默认为 . (当前目录)

泛用 Object 文件 IO

提供 data 写入 Object 文件的命令:

$ git hash-object [-t <type>] [-w] (<file> | --stdin)
# [-t <type>] : Object 类型, 默认为 Blob
# [-w] : 是否真正写入 .git/objects 数据库, 默认为否
# <file>: Data 的来源文件. 文件内容会被当成 data
# --stdin: 从标准输入获取, 一行一个 Object
# 输出是 Data 打包成 Raw 后的 SHA-1, 如: 
ebf4a6068f1c4176bf8db06771445b4d994f2199

从 Object 文件里读取 data 并将其有效信息显示出来的命令

$ git cat-file (-t | -s | -p | <type>) <object>
# -t: 输出 Object 文件的类型
# -s: 输出 Object 文件的大小 (按字节计)
# -p: 按照文件中指示的类型美观地输出 data
# <type>: 按照类型输出 data 的原始内容
# <object>: 可以唯一确定某个 Object 的指示符, 具体见下文