# 一次完整的底层实现

首先增加一个文件

echo 'abc' > a.txt

然后添加索引

git update-index --add a.txt

这个时候已经添加到了暂存

然后生成树

git write-tree
5633023fa2e2b8ecd01d8d50614af1fb20c5c64c

提交版本信息

echo 'can i success' | git commit-tree 563302 -p 4732b8
8e9a9352ea0f079cbd44556bc37efac69236f84b

前面的是 tree,后面的是前一次的提交

注意:那个-p 灰常的重要,如果前面有记录,而后面没有使用的话,亲,前面的记录全丢失了哦

这个时候可以通过

git log --stat 8e9a93

查看版本记录,虽然可以看到,但是不带参数不能使用,并且git status显示的结果也是未提交。

echo '8e9a9352ea0f079cbd44556bc37efac69236f84b' > .git/refs/heads/master

并不推荐直接修改文件

git update-ref refs/heads/master 8e9a9352ea0f079cbd44556bc37efac69236f84b

嗯,现在好了

装逼非常的创建分支

echo '52f2b57798a8674b0f4f922ee9295ff37740b221' > .git/refs/heads/newbranch