2011-06-04 87 views
6

我是一个尝试对概念和术语进行排序的git新手。 git术语表说,一棵树相当于一个目录,一个目录就是你用ls得到的。它们是可互换的术语吗?或者“树”和“目录”在不同的环境下使用,或者是指单独的(但相关的)事物?树和目录有什么区别?

+1

我有同样的问题http://stackoverflow.com/questions/5917738/how-does-git-record-or-more-likely-represent-file-paths-and-names-for-its-blob - 提交树结构与提交中包含的文件的目录结构相匹配,但排除没有任何要跟踪的“空”目录。检出分支将创建任何所需的目录,但不会删除任何目录。 – 2011-06-04 20:01:06

回答

3

简短的回答:是的,树是一个目录,目录是一棵树。

漫长的答案:树是一个对象,其中包含一个blob列表,要附加到斑点的名称,以及其他树以及附加到它们的名称。 http://book.git-scm.com/1_the_git_object_model.html对git模型中的不同对象类型有很好的解释;我会建议阅读它!

+0

是的,了解树引用blob是关键。 – user7797 2011-06-05 00:42:15

3

在Git术语中,“树”是文件和目录的层次结构。这(有目的地)非常类似于文件系统中的目录。

Git提交对象包含对树对象的引用,该对象是该提交时所有文件的状态。

-1

简而言之,“树”指的是当时整个资源库状态的快照(就像您获取当前代码[也称为HEAD]的资源库的内容)当前签出的提交等)

目录只是指文件系统目录。

+0

我有时会用括号分层来吓唬自己。 – damianb 2011-06-04 03:34:16

+0

由于树包含其他树,它们本身也可能属于之前(和将来)提交的树,因此不是严格符合要求。 – siride 2011-06-04 04:09:30

+0

某些目录的树和其他提交中相同目录的树可能是相同的(相同的SHA1)。所以树可能不代表整个目录,它与时间无关(提交)。 – svick 2011-06-04 21:35:04