什么是;blob";在Github中对应于什么?

什么是;blob";在Github中对应于什么?,git,github,read-the-docs,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-dj

下面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

我正在阅读芹菜的文档,想看看它在Github上的来源,因此我提出了这个问题。请注意,我可以通过“master”分支查看文档的源代码。

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

记住,Git本身就是关于提交的。每次提交都存储一些数据—一组文件的快照和一些元数据,包括提交人、提交时间和提交原因等内容。每个提交都由其哈希ID唯一标识。分支和标记名(如果存在任何此类名称)仅用于查找特定的哈希ID以启动您或Git,因为任何提交中的元数据项之一是父哈希ID列表,因此Git可以在最后一次提交时启动并向后工作

提交及其存储的数据和元数据是Git存在的原因。每个Git存储库都是提交的集合,加上一些辅助数据以帮助查找提交。(计算机上的非裸存储库也为您提供了一个工作区,您可以在其中执行新工作,但提交和辅助数据(不允许您在此执行新工作)是最低限度的。)

另一方面,GitHub与提交无关。GitHub是关于共享的。1这种共享使用(裸的)Git存储库,但在此基础上增加了很多东西。Git存储库或某种类型的存储库2对此是必需的,但不是增值部分

当GitHub试图增加其附加值时,他们开始添加这样的内容:这里有一种方便的方法,可以在一个特定的提交中访问一个特定的文件。GitHub的接口是一个API,该API是通过HTTP/HTTPS编码的。这意味着URL和JSON等等

在本例中,GitHub发明了一些特定的URL路径(请参阅),可以引用提交中的文件。他们提供了一种使用提交散列ID加上提交中的文件路径来访问该特定提交中的文件的方法,以及另一种使用分支名称(例如
master
)加上提交中的文件路径来访问由该分支名称标识的提交中的该文件的方法

要在Git中执行此操作,您通常只需
Git checkout
将整个提交放入工作树的分支名称,然后通过其OS级路径查看文件,它是从它的in-Git提交路径中派生出来的。3但您的问题可能是:我如何从由分支名称标识的提交中查看一个文件?在这种情况下,请尝试
Git show

git show master:path/to/File.ext
将允许您从该提交中查看以该名称(
path/to/file.ext
)存储的文件(名称
master
解析为的任何哈希ID)


1共享和归档(场外存储)。两个!我们的两个主要武器是

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


3操作系统级路径可能在几个方面与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在这里根本没有问题。

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

记住,Git本身就是关于提交的。每次提交都存储一些数据—一组文件的快照和一些元数据,包括提交人、提交时间和提交原因等内容。每个提交都由其哈希ID唯一标识。分支和标记名(如果存在任何此类名称)仅用于查找特定的哈希ID以启动您或Git,因为任何提交中的元数据项之一是父哈希ID列表,因此Git可以在最后一次提交时启动并向后工作

提交及其存储的数据和元数据是Git存在的原因。每个Git存储库都是提交的集合,加上一些辅助数据以帮助查找提交。(计算机上的非裸存储库也为您提供了一个工作区,您可以在其中执行新工作,但提交和辅助数据(不允许您在此执行新工作)是最低限度的。)

另一方面,GitHub与提交无关。GitHub是关于共享的。1这种共享使用(裸的)Git存储库,但在此基础上增加了很多东西。Git存储库或某种类型的存储库2对此是必需的,但不是增值部分

当GitHub试图增加其附加值时,他们开始添加这样的内容:这里有一种方便的方法,可以在一个特定的提交中访问一个特定的文件。GitHub的接口是一个API,该API是通过HTTP/HTTPS编码的。这意味着URL和JSON等等

在本例中,GitHub发明了一些特定的URL路径(请参阅),可以引用提交中的文件。他们提供了一种使用提交散列ID加上提交中的文件路径来访问该特定提交中的文件的方法,以及另一种使用分支名称(例如
master
)加上提交中的文件路径来访问由该分支名称标识的提交中的该文件的方法

要在Git中执行此操作,您通常只需
Git checkout
将整个提交放入工作树的分支名称,然后通过其OS级路径查看文件,该路径源自其in-Git提交路径。3但您的问题可能是:如何查看