git commit和git commit-tree有什么区别

时间:2015-04-14 09:30:55

标签: git commit

我正在阅读git对象:blob,tree,commit,tag。为了更好地理解git是如何工作的,我尝试了一些低级命令,如write-treecommit-tree

  1. mkdir test; cd test - > git init
  2. 我创建了一个文件git add file。我可以在.git/objects
  3. 中看到生成blob和树对象
  4. git write-tree打印当前的treeID
  5. git commit-tree treeID -m "commit a tree"提交此树。在此操作之后,生成一个提交对象,我可以看到它确实包含作者,日期等。但是,我无法使用git log检查我的提交,错误是:fatal: bad default revision 'HEAD'
  6. 完成上述操作后,当我运行git status时,我看到该文件仍在索引中等待提交。 commit-tree有什么用?commit-tree和`commit'有什么区别?

1 个答案:

答案 0 :(得分:3)

git-commit - 记录对存储库的更改 在新提交中存储索引的当前内容以及描述更改的用户的日志消息。

  

git commit"记录对存储库的更改"

git-commit的图解表示在SO

处显示为here

git-commit-tree - 创建一个新的提交对象 基于提供的树对象创建新的提交对象,并在stdout上发出新的提交对象ID。

  

这通常不是最终用户想要直接运行的。创建一个   基于提供的树对象的新提交对象并发出新的   在stdout上提交对象id。从标准中读取日志消息   输入,除非提供-m-F选项。