我正在阅读git对象:blob,tree,commit,tag。为了更好地理解git是如何工作的,我尝试了一些低级命令,如write-tree
和commit-tree
。
mkdir test; cd test
- > git init
git add file
。我可以在.git/objects
git write-tree
打印当前的treeID git commit-tree treeID -m "commit a tree"
提交此树。在此操作之后,生成一个提交对象,我可以看到它确实包含作者,日期等。但是,我无法使用git log
检查我的提交,错误是:fatal: bad default revision 'HEAD'
。 完成上述操作后,当我运行git status
时,我看到该文件仍在索引中等待提交。 commit-tree
有什么用?commit-tree
和`commit'有什么区别?
答案 0 :(得分:3)
git-commit - 记录对存储库的更改 在新提交中存储索引的当前内容以及描述更改的用户的日志消息。
git commit"记录对存储库的更改"
git-commit
的图解表示在SO
git-commit-tree - 创建一个新的提交对象
基于提供的树对象创建新的提交对象,并在stdout
上发出新的提交对象ID。
这通常不是最终用户想要直接运行的。创建一个 基于提供的树对象的新提交对象并发出新的 在stdout上提交对象id。从标准中读取日志消息 输入,除非提供
-m
或-F
选项。