我想从git stores提交历史记录的文件中读取,将每个提交信息存储在项目的数据库中,并在项目视图中显示所有历史记录
答案 0 :(得分:13)
没有单个文件可以查询以获取提交历史记录。 git的对象模型有很多很好的解释(例如git for computer scientists,Pro Git,the git community book),但在这里快速解释可能会有用:
git中有各种类型的对象,最重要的是:
每个都由其内容的哈希标识,并且此哈希称为对象名称 - 这些是您在使用git的过程中可能看到的40位十六进制字符串。每个对象都存储在.git/objects/
目录中,作为松散对象(每个文件一个)或作为一个有效存储在包文件中的对象之一。文件.git/HEAD
表示存储库当前所处的版本,通常包含对特定分支的引用,由.git/refs/heads
下的文件或存储在pack文件中的引用表示。 (HEAD
也可以直接指向特定提交的对象名称。)其中一个表示分支的文件,例如.git/refs/heads/master
,只包含一个对象名称。
为了从这个分支提示遍历历史记录,git将在对象数据库中找到该文件中指定的对象,并递归地跟随指向其父节点的指针。
但是,对于您描述的用例(即遍历历史记录以将其导出),我强烈建议您执行以下操作之一:
答案 1 :(得分:4)
您可以了解git如何在此处存储对象:How git stores objects。阅读该书中“Internals and Plumbing”部分的其他章节,了解它是如何工作的。
基本上,没有“存储提交历史的文件”,它比这更复杂。您应该使用现有API之一作为您选择的语言(搜索“git API”和您的语言,那里有很多)。