git log
是一个功能强大的Git命令,它允许对很多事情进行查询:文件作者,提交描述,提交日期等。Git本身says表示元数据存储在某些数据库中。我在任何地方都找不到哪种数据库。
所以我想知道这个数据库是什么?是关系型的,也许我可以以某种方式使用SQL来直接从数据库执行查询,而不是使用git log
?
编辑:此问题与How does git store files?不同,因为该问题主要询问Git如何存储提交的文件,而我的问题询问元数据存储(元数据!=数据)。
答案 0 :(得分:2)
在该描述中,Git从字面意义上将其内部状态描述为“数据库”。来自Wikipedia:
数据库是有组织的数据集合,可以电子方式存储和访问。
它不是关系数据库,或者您可以使用SQL之类的查询语言轻松查询它。
但是,您可以通过编程方式访问数据库。例如,如果您使用的是.NET,则使用LibGit2Sharp和Linq:
using (var repo = new Repository(@"path\to\repo.git"))
{
// Rev walking
var commits = repo.Commits
.StartingAt("sha")
.Where(c => c.Author.Email.Contains("@example.com"))
.ToList();
}
答案 1 :(得分:2)
从git glossary
(在https://git-scm.com/docs/gitglossary)
对象数据库-存储一组“对象”,并通过其对象名称标识单个对象。这些对象通常位于$ GIT_DIR / objects /中。
数据库是通常存储在.git/objects/
下的文件的集合(或者,对于裸仓库,仅存储在objects/
下。)
这不是RDBMS。它没有通用的查询语言,而是与各种git工具一起使用(反之亦然),可以快速访问git所需的信息。