是否有 Git URI 方案允许我在特定提交时引用存储库中的文件?

Is there a Git URI scheme that lets me reference a file in a repo at a specific commit?

git Resource Identifier Scheme 让我可以引用特定的 git 存储库。

但是,我正在寻找一个 URI 方案,它可以让我在特定的 git 存储库中的特定提交时引用特定的 file/folder。例如,图形 URI git://github.com/torvalds/linux.git:usr/Makefile@a30d8a39f0571425a459816ed8680e987a2ff279 可用于在提交 a30d8a39f0571425a459816ed8680e987a2ff279 时引用存储库 git://github.com/torvalds/linux.git 中的文件 usr/Makefile。是否有实现此目的的标准 URI 方案?

明确地说,我对适用于所有 git 服务器的 URI 方案感兴趣,例如HTTP URL 适用于例如GitHub 或仅限 GitLab。

Git 本身与文件无关;这是关于承诺。所以主要的 Git 命令是关于与另一个存储库对话并获得提交。 Git 理解的 URL 旨在实现这一目标,他们确实做到了,这就是他们停止的地方。

the git archive command,其中—与--远程<em>url</em>——可以从一个特定的提交中提取部分或全部文件的存档,前提是服务器允许。这不是一个特定的 file URL/URI,但是:这是一个 Git 命令,它到达 Git 服务器(同样,通常提供 commits),然后询问 Git 服务器是否愿意准备单个提交或其子集,作为 tar 或 zip 存档。通过提供单个文件的路径作为子集,您 可以 能够从特定 Git 服务器上的特定提交中提取单个文件。但这就是 Git 实现您的目标的程度——您向 git archive 提供的论据又不是 URL/URI。

我不知道有任何被广泛接受的方法可以做到这一点,但这是我多年前提出的方案:http://www.nuke24.net/docs/2014/GitObjectURIScheme.html

一般来说,形式是x-git-object:ef967a26bcd39ca62dd687e929ba4eba0ae66e81,它引用对象,由Git散列(在本例中是Linux 的 Makefile,但也可能是一个提交或树,它们不能直接表示为 strings/byte 序列)。该文档还指定了建议存储库和引用命名分支上最新的方法或树或提交中的路径,因此您可以说 x-git-object:latest?branch=master&repository=git://github.com/torvalds/linux.git#Makefile 在 master 分支上的最新提交中引用 Makefile,无论如何可能是。