为什么';t git版本目录?

为什么';t git版本目录?,git,Git,我很清楚git对空目录不起作用(这是git的一个比较流行的问题),但我想问的是,不跟踪目录是否有特殊的理由或理由(如果可能的话是官方的) 我这样问是因为在某些情况下,目录本身可以拥有有意义的元数据。例如,如果使用粘性模式,目录的文件模式可能很重要。目录为空这一事实对于应用程序可能很重要 Git跟踪内容,文件夹/目录不是内容。尽管你是对的,但一些元数据可能会让你感兴趣。在这种情况下,建议在目录中添加一个.gitignore文件或其他一些无意义的文件,以便提供git可以识别的内容 看 这就是Git设

我很清楚git对空目录不起作用(这是git的一个比较流行的问题),但我想问的是,不跟踪目录是否有特殊的理由或理由(如果可能的话是官方的)


我这样问是因为在某些情况下,目录本身可以拥有有意义的元数据。例如,如果使用粘性模式,目录的文件模式可能很重要。目录为空这一事实对于应用程序可能很重要

Git跟踪内容,文件夹/目录不是内容。尽管你是对的,但一些元数据可能会让你感兴趣。在这种情况下,建议在目录中添加一个
.gitignore
文件或其他一些无意义的文件,以便提供git可以识别的内容

这就是Git设计的工作方式

在我以前做的一些web项目中,我需要一个php日志目录,当然它也忽略了.log文件,所以本质上我有一个空的日志目录,这是Apache由于vhost设置而正确运行所必需的

在本例中,我添加了一个readme.txt,其中没有任何内容


我相信你已经在另一条线上找到了这个答案,仍然值得一提:

没有官方的理由。报告简单地说:

没有人有足够的能力进行更改以允许空目录 他对这种情况非常关心,足以补救

Git是“愚蠢的内容跟踪器”;也就是说,拥有一个相当简单的(因而是通用的)内部表示,并依靠围绕该表示构建的工具来做任何有趣的事情。它也仅用于跟踪源代码;它不允许您使用任意权限跟踪任意目录树,因为这会使您陷入一系列与跟踪源代码无关的问题(是否存储用户和组ID?名称?硬链接?xattrs?资源分叉?等等)

愚蠢的一部分就是跟踪文件的内容。它确实存储了一些在Unix环境中处理源代码所必需的元数据:符号链接和可执行位。有足够多的脚本供人们签入,您希望跟踪可执行位,否则每个人都必须实现它。但是除了这两段元数据之外,Git只跟踪文件的内容及其名称

如果您有超出此范围的用例,那么您需要创建自己的、包装现有的用例,或者使用Git提供的扩展点,如和


如果您想要更丰富地跟踪权限和目录,我建议使用包装器,如。

将文件放入目录中不会保留目录的模式/元数据。你要做的就是确保目录是在git clone期间创建的,我知道git是一个内容跟踪器,但它可以是一个内容跟踪器,并且仍然跟踪目录……我想知道为什么它是专门设计成这种方式的。好的观点。如果您需要使用git进行此类结构,那么您的程序需要知道存在一个重影文件。它不会在文件夹中保存任何数据,但有时在未创建目录时工具会失败,因此有时最好确保在克隆时目录结构会自我复制。+1,但更常见的保持空目录的方法是向其中添加
.gitignore
文件。一些WAG已经开始使用一个名为
.gitkeep
文件的空文件来实现此目的。但我认为这是一件令人憎恶的事。只需使用一个
.gitignore
,它是一个单一的通用Git文件,如果需要,您可以在该文件中添加本地忽略。