树和目录有什么区别?

6

我是一名Git新手,正在整理概念和术语。Git词汇表中说,树(tree)等同于目录(directory),而目录是使用ls命令得到的。它们是否可以互换使用?或者说,“树”和“目录”应该在不同的上下文中使用或指代不同(但相关)的事物?


1
我曾经遇到过同样的问题https://dev59.com/TFbUa4cB1Zd3GeqPDPCj - 提交树结构与提交包含的文件的目录结构匹配,但不包括没有要跟踪的“空”目录。检出分支将创建任何需要的目录,但不会删除任何目录。 - Philip Oakley
4个回答

3
在Git术语中,“树”是一个由文件和目录组成的层次结构。这与文件系统中的目录非常相似(故意如此设计)。
Git提交对象包含对树对象的引用,该对象表示提交时所有文件的状态。

3
简短回答:是的,树和目录是等同的。
详细解释:一个树是一个对象,它包含一个blob列表、附加到这些blob的名称、其他树以及附加到它们的名称。在git模型中,http://book.git-scm.com/1_the_git_object_model.html 对不同对象类型有很好的解释;建议阅读!

是的,理解树引用了 blobs 是关键。 - user7797

1

第二个链接中的图表非常有帮助。 - user7797
谢谢。就我个人而言,我能够通过那张插图理解Git的对象模型。 - OnesimusUnbound

-1
简单来说,“树”指的是整个代码库在某一时刻的快照(就像你当前代码的状态[也称为HEAD],或者当前检出提交时的代码库等)。
“目录”只是指文件系统中的一个目录。

有时候,我的括号嵌套让我感到害怕。 - damianb
并不完全准确,因为一棵树包含其他树,它们本身也可能属于之前(和未来)提交的树。 - siride
某个目录的树和其他提交中相同目录的树可能是相同的(相同的SHA1)。因此,一个树可能不代表整个目录,并且它与时间无关(提交有关)。 - svick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接