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

问题描述

git Resource Identifier Scheme 允许我引用特定的 git 存储库。

但是,我正在寻找一种 URI 方案,让我可以在特定的 git 存储库中的特定提交中引用特定文件/文件夹。例如,比喻 URI git://github.com/torvalds/linux.git:usr/Makefile@a30d8a39f0571425a459816ed8680e987a2ff279 可用于在提交 usr/Makefile 时引用存储库 git://github.com/torvalds/linux.git 中的文件 a30d8a39f0571425a459816ed8680e987a2ff279。是否有标准的 URI 方案可以实现这一点?

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

解决方法

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

the git archive command,它与 --remote url 一起可以从一个特定提交中提取部分或所有文件的存档,前提是服务器允许。不过,这不是一个特定的文件 URL/URI:这是一个 Git 命令,它可以访问 Git 服务器(同样,它通常提供 commits)然后询问如果 Git 服务器愿意准备单个提交或其子集,作为 tar 或 zip 存档。通过提供单个文件的路径作为子集,您可以从特定 Git 服务器上的特定提交中提取单个文件。但这就是 Git 朝着实现您的目标迈进的范围——您将提供给 git archive 的参数再次不是 URL/URI。