gra*_*aci 12 git tree terminology blob github
每当我尝试添加github文件的链接时,我都会注意到这一点.您可以使用blob
以下命令添加链接:
https://github.com/facebook/pop/blob/master/Podfile
如果您将blob更改为tree
以下内容,则会出现相同的文档:
https://github.com/facebook/pop/tree/master/Podfile
有什么不同?每当我想在文档中为后代添加链接时,我更喜欢哪一个?
GitHub 的网站目前似乎是:
blob
的文件,并tree
为目录中的网址;tree
改为包含blob
;和blob
到包含的 URL tree
。在您提出问题时,GitHub 的网站可能只是在tree
和之间重写文件 URL blob
,而不是正确重定向它们。(重写和重定向 URL 是 Web 服务器的活动。)如果是这样,那么更改将不会出现在浏览器的地址栏中。但也许你不是那个意思。
我发现这篇文章很有帮助。这详细解释了 git 对象。
本质上,blob 只是一堆字节,可以是任何东西,如文本文件、图像、实际源代码等。
一棵树就像一个目录,它指向:
tree
/ | \
blob tree blob
|
blob
Run Code Online (Sandbox Code Playgroud)
希望上面的例子澄清了差异。
在您的示例中,Podfile
是一个包含源代码的文件。因此,它是一个blob
对象。然而,git 很聪明并且意识到了这个事实。因此,当您单击该链接时,它会将链接中的 更改tree
为blob
。您可以通过单击以下tree
链接自行尝试测试:
https://github.com/facebook/pop/tree/master/Podfile
类似地,如果您转到 git 存储库上的目录,它就是一个tree
对象。同样,如果您将 更改tree
为blob
git 是明智的,并且意识到它实际上是一个目录而不是文件并将blob
链接中的更改为tree
. 同样,您可以尝试自己测试:
https://github.com/facebook/pop/blob/master/pop-tests
就当你想添加到文档时更喜欢哪个链接而言,这取决于链接指向什么,基本上有 4 种类型的 git 对象:
希望这能回答你的问题。我仍然建议通读这篇文章以彻底了解 git 对象。
Blob 是文件的表示,文件差异被分成名为 的连续修改块hunks
。Hunks 是输出格式@@
中的分隔行git diff
。
树是目录的表示。有不同类型的树:
\n\n工作树
\n\n\n实际检出文件的树。工作树通常包含 HEAD 提交树的内容,以及您已进行但尚未提交的任何本地更改。
\n
指数
\n\n\n具有统计信息的文件的集合,其内容存储为对象。索引是工作树的存储版本。说实话,它还可以包含工作树的第二个,甚至第三个版本,在合并时使用。
\n
树状
\n\n\n指向提交对象、树对象或指向标记或提交或树对象的标记对象的引用。
\n
\n\n\nGit\xe2\x80\x99s 内部存储中有四种类型的对象。提交对象、带注释的标签对象、blob 和树对象。
\n
参考
\n\n