0

想知道如何在 git 中浏览所有提交(或所有来自单个分支)的列表。这是怎么git log做到的(指向部分代码的指针也很酷,我只是不知道从哪里开始)?我可以在原始文件系统上以某种方式做到这一点吗?

推理是:需要用不需要调用系统命令的其他语言编写工具。

更新:我已经阅读了Git 内部:Git 对象(以及后续章节),我知道还有包文件。我的主要问题是了解我们运行时发生了什么:git rev-list --all. 或者 - 对于单个分支 - 没有--all标志的相同命令。git 是否计算出头部,从它的对象存储中拉出它,检查父母的 shas,从对象存储中拉出那些等等?还是有其他更快的方法?

4

2 回答 2

2

不确定你是否已经遇到过这个: LibGit2https ://github.com/libgit2/libgit2

libgit2 是 Git 核心方法的可移植、纯 C 实现,作为具有可靠 API 的可重入可链接库提供,允许您使用绑定的任何语言编写本机速度自定义 Git 应用程序。

它是一个开源的,浏览代码,应该会给你一些有价值的输入。例如:Commit.c

于 2013-05-02T16:15:21.953 回答
0

分支只是文件.git/refs夹中的文件,每个文件都包含当前分支提示的 sha1。此外,git gc毕竟可以在.git/packed-refs文件中收集所有参考。

于 2013-05-02T17:59:48.857 回答