Github中的“ blob”对应什么?

时间:2019-11-26 09:15:55

标签: git github read-the-docs

以下URL中“ blob”后面的单词指向给定存储库的“ master”分支:

https://github.com/celery/celery/blob/master/docs/django/first-steps-with-django.rst

根据上述约定,以下URL指向什么?

https://github.com/celery/celery/blob/241d2e8ca85a87a2a6d01380d56eb230310868e3/docs/django/first-steps-with-django.rst

我正在阅读芹菜的latest文档,并想在Github上查看其来源,因此是个问题。请注意,我可以转到“ master”分支来查看master文档的源代码。

1 个答案:

答案 0 :(得分:1)

这实际上是关于 GitHub 的问题,而不是关于 Git 的问题。

请记住,Git本身就是有关 commits 的内容。每个提交都存储一些数据(一组文件的快照)和一些元数据,包括诸如谁进行提交,何时以及为什么进行提交等内容。这些提交中的每一个都由其哈希ID唯一标识。分支和标记名称(如果存在这样的名称),仅用于查找某些特定哈希ID,以使您(或Git)从任何提交中的元数据项之一开始是列表父哈希ID,以便Git可以在 last 提交开始,并向后工作。

使用存储的数据和元数据提交是Git存在的原因。每个Git存储库都是提交的集合,外加一些辅助数据以帮助查找提交。 (您的计算机上的非裸存储库还为 you 提供了一个工作区,您可以在其中进行新工作,但是提交和辅助数据是 不要让您在这里做新工作,这是最低限度的要求。)

另一方面,

GitHub与 commits 无关。 GitHub是关于 sharing 的。 1 这种共享使用(裸露的)Git存储库,但除此之外还增加了很多东西。为此,需要Git存储库(或无论如何 2 某种存储库),但不是增值部分。

随着GitHub试图增加其附加值,他们开始添加以下内容:这是一种在一次特定提交中访问特定文件的便捷方法。您的 to 界面是一个API,并且该API通过HTTP / HTTPS进行编码。这意味着URL和JSON等。

在这种情况下,GitHub发明了一些特定的URL路径(请参阅the anatomy of a URL),这些路径可以引用提交中的文件。他们提供了一种使用提交哈希ID加上提交中的文件路径来访问特定提交中的文件的方法,以及提供了使用分支名称(例如master)和文件的另一种方法,提交中的路径以访问由该分支名称​​ 标识的提交中的文件。

要在Git中执行此操作,通常只需git checkout分支名称(将 entire commit 放入您的工作树中),然后按其操作系统查看文件 3 但是,也许您的问题是:如何从分支名称标识的一次提交中查看一个文件?在这种情况下,请尝试git show

git show master:path/to/File.ext

可让您查看该提交中以该名称(path/to/file.ext存储的文件(无论名称master解析为哪个哈希ID)。


1 共享和存档(异地存储)。二!我们的两个主要武器是...

2 请记住,Bitbucket曾经是Mercurial存储库共享站点。它持有汞回购,而不是Git回购。也许有一天GitHub将拥有其他类型的存储库。

3 OS级别的路径可能与Git内的路径有所不同。例如,在典型的Windows系统上,文件名大小写(大写或小写)仅被尊重一半,因此名为path/to/File.ext的Git文件可能位于Windows OS文件系统中的path/TO/file.EXT下。典型的MacOS文件系统对UTF-8字符串强制执行某些分解规则,因此MacOS也可能会更改Git文件的路径。 Linux倾向于不解释UTF-8,因此,如果Git使用无效的UTF-8字节序列作为文件路径名,那么Linux根本没有问题。