Github中的“blob”对应什么?

bprjcwpo  于 2023-01-01  发布在  Git
关注(0)|答案(3)|浏览(348)

以下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文档的源代码。

pxq42qpu

pxq42qpu1#

这实际上更多的是关于 GitHub 的问题,而不是关于 Git 的问题。
请记住,Git本身就是关于 commits 的。每个提交都存储一些 data-一组文件的快照-和一些 metadata,包括提交者、提交时间和提交原因。每个提交都由其哈希ID唯一标识。分支和标记名(如果存在)仅仅是为了找到某个 * 特定的 * 哈希ID,让你--或者Git--开始,因为任何提交中的元数据项之一都是一个 * 父 * 哈希ID列表,这样Git就可以从 * 最后一次 * 提交开始并向后工作。
提交及其存储的数据和元数据是Git存在的原因。每个Git仓库都是提交的集合,加上一些辅助数据来帮助 * 查找 * 提交。(* 您 * 计算机上的非裸仓库也为 * 您 * 提供了一个工作区,您可以在其中进行新的工作,但提交和辅助数据是最低限度的,它们 * 不 * 让您在这里进行新的工作。)
另一方面,GitHub与 commits 无关。GitHub与 sharing 有关。1这种共享使用(裸)Git存储库,但在此基础上添加了大量内容。Git存储库--或者某种类型的存储库2--是必要的,但不是增值部分。
当GitHub试图增加他们的附加值时,他们开始添加如下内容:* 这里有一个方便的方法来访问一个特定提交中的一个特定文件。* 你到 * GitHub的接口是一个API,这个API是通过HTTP/HTTPS编码的。
在这种情况下,GitHub发明了一些特殊的URL路径(参见the anatomy of a URL),可以引用提交中的文件。他们提供了一种方法,使用提交哈希ID加上提交中的文件路径来访问特定提交中的文件,另一种方式是使用分支名称(诸如master)加上提交内的文件路径来访问由该分支名称标识的提交中的文件。
要在Git中实现这一点,你通常只需要git checkout分支名称--这会将 * 整个提交 * 放入你的工作树--然后通过它的操作系统级路径来查看文件,该路径是从它的in-Git-commit路径派生出来的。3但也许你的问题是:**如何查看由分支名称标识的一个提交中的一个文件?**在这种情况下,请尝试git show

git show master:path/to/File.ext

将允许您查看该提交中存储在该名称(path/to/file.ext)下的文件(无论名称master解析为什么哈希ID)。
1共享和存档(异地存储)。两个!我们的两个主要武器是...
2请记住,Bitbucket曾经是一个Mercurial仓库共享网站,它拥有的是Hg仓库,而不是Git仓库,也许有一天GitHub会拥有其他类型的仓库。
3操作系统级别的路径可能与in-Git路径在几个方面有所不同。例如,在典型的Windows系统上,文件名大小写(大写或小写)只考虑了一半,因此名为path/to/File.ext的Git文件可能位于Windows操作系统的path/TO/file.EXT下。典型的MacOS文件系统对UTF-8字符串强制执行某些分解规则,因此MacOS也可能会更改Git文件的路径。Linux倾向于不解释UTF-8,因此如果Git使用无效的UTF-8字节序列作为文件路径名,Linux完全没有问题。

kh212irz

kh212irz2#

记住每个版本文件的SHA-1密钥是不现实的;另外,你并没有把文件名保存在系统中--只是保存了内容。这种对象类型叫做blob。
你可以让Git告诉你Git中任何对象的对象类型,给定它的SHA-1密钥:

$ git cat-file -t 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
blob

https://git-scm.com/book/en/v2/Git-Internals-Git-Objects
https://git-scm.com/book/en/v2/images/data-model-1.png

yk9xbfzb

yk9xbfzb3#

“blob”后面的代码是指定提交的SHA,它可以从文件的提交中查看。
主分支中的文件将一次又一次地更新,有了这个唯一的代码,我们可以确保查看相同版本的文件。

相关问题