我知道git不能在空目录上工作(这是一个比较流行的git问题之一),但我想知道不跟踪目录是否有特定的理由或原理(如果可能的话,官方的)。
我问这个问题是因为在某些情况下,目录本身可以具有有意义的元数据。例如,如果使用粘性模式,目录的文件模式可能很重要。一个目录是空的这个事实可能对应用程序很重要。
我问这个问题是因为在某些情况下,目录本身可以具有有意义的元数据。例如,如果使用粘性模式,目录的文件模式可能很重要。一个目录是空的这个事实可能对应用程序很重要。
Git是一个“愚蠢的内容跟踪器”。它的设计基于“愚蠢”,即具有相当简单(因此通用)的内部表示,并依赖于围绕其构建的工具来执行任何花哨的功能。它还仅设计用于跟踪源代码; 它不设计用于允许您跟踪具有任意权限的任意目录树,因为那将使您陷入一些与跟踪源代码无关的问题的麻烦中(您存储用户和组ID吗?名称?硬链接?xattrs?资源叉等)。
其中一部分愚蠢之处在于仅跟踪文件的内容。它确实存储了一些元数据,这对于在Unix环境下处理源代码至关重要:符号链接和可执行位。有足够多的人们签入的脚本需要跟踪可执行位,因为否则每个人都必须实现它。但除了这两个元数据之外,Git只会跟踪文件内容及其名称。
如果您有超出此范围的用例,则应创建您自己的Porcelain,包装现有的一个,或使用Git提供的扩展点,例如hooks和attributes。
如果您想要更丰富的权限和目录跟踪,我建议使用像etckeeper这样的包装器。
git clone
期间创建该目录。 - benzado.gitignore
文件。一些人开始使用一个名为.gitkeep
的空文件来实现这个目的。但我认为这是一种丑陋的做法。只需使用一个.gitignore
文件即可,它是一个单一的通用Git文件,如果需要,您可以在文件中添加本地忽略。 - Abizern