【问题标题】:What is the difference between a tree and a directory?树和目录有什么区别?
【发布时间】:2011-06-04 03:28:14
【问题描述】:

我是一名 git 新手,试图对概念和术语进行分类。 git 词汇表说一棵树相当于一个目录,而一个目录就是你用 ls 得到的。它们是可互换的术语吗?或者“树”和“目录”是在不同的上下文中使用还是指不同的(尽管相关的)事物?

【问题讨论】:

  • 我遇到了同样的问题stackoverflow.com/questions/5917738/… - 提交树结构是/确实与提交中包含的文件的目录结构匹配,但不包括没有任何可跟踪的“空”目录。签出一个分支将创建任何需要的目录,但不会删除任何目录。

标签: git terminology


【解决方案1】:

简短的回答:是的,树就是目录,目录就是树。

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

【讨论】:

  • 是的,理解树引用 blob 是关键。
【解决方案2】:

在 Git 术语中,“树”是文件和目录的层次结构。这(故意)与文件系统中的目录非常相似。

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

【讨论】:

    【解决方案3】:

    【讨论】:

    • 第二个链接中的图表很有帮助。
    • 谢谢。就个人而言,通过图解的图表,我能够理解 git 的对象模型。
    【解决方案4】:

    简单地说,“树”指的是整个存储库状态在那个时刻的快照(就像您为当前代码 [也称为 HEAD] 获得的存储库当前已签出的提交等)

    Directory 只是指一个文件系统目录。

    【讨论】:

    • 我有时会被我的括号分层吓到自己。
    • 严格来说并不正确,因为一棵树包含其他树,这些树本身也可能属于以前(和未来)提交的树。
    • 某个目录的树和其他提交中同一目录的树可能相同(相同的SHA1)。所以一棵树可能不代表整个目录,它与时间无关(提交做)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2014-11-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2011-07-02
    • 2011-10-16
    相关资源
    最近更新 更多