文章详细介绍了如何使用 Git 底层命令(Plumbing commands)创建提交,而不是常用的高层命令。文章首先解释了 Git 的基础知识,包括文件的三种状态(已修改、已暂存、已提交)以及 Git 项目的三个区域(工作目录、暂存区、Git 目录)。 接着,文章解释了 Git 对象模型,包括 blob(存储文件内容)、tree(类似目录,存储文件名和指向 blob 或其他 tree 的引用)和 commit(包含指向 tree 的引用、作者、时间、提交信息等)。 最后,文章通过一个实例,逐步演示了如何使用 `git hash-object`、`git update-index`、`git write-tree` 和 `git commit-tree` 等命令创建 blob、tree 和 commit 对象,最终实现不使用 `git commit` 命令进行提交。