我试图使用以下 .gitignore
配置排除除我需要的文件之外的所有文件:
*.* # Ignore all files
*~ # Ignore temp files
\#* # Ignore temp files
!.gitignore
!*.conf
!**/*.conf
但是,当我执行git status
时,文件./postgresql/9.3/warm-standby/postgresql.conf
没有显示。如何修复我的 .gitignore
?
Git 版本是 2.1.4
最佳答案
首先:感谢 @EtanReisner 仔细研究了这一点,并感谢 @RetoAebersold 提供了正确的 link
问题是,使用以下语句(不是您的 .gitignore
的一部分),您将文件和目录列入黑名单:
*
现在,如果您像以前一样使用 *.*
,这通常不是问题,因为大多数目录不包含点 (.
)。然而你的却是:
* .*
postgresql/9.3
所以发生的情况是所有目录都被列入黑名单。为了能够在目录中添加文件,您首先需要将这些目录列入白名单。您可以使用 oneliner 执行此操作:
!*.*/
换句话说,将以斜杠结尾的所有内容都列入白名单。
现在您也可以将文件列入白名单:
!*.conf
请注意,白名单 !**/*.conf
是不必要的(甚至可能不允许,特别是因为两个连续的星号 **
仅在 git 中启用1.8.*)。
更好的配置文件如下:
*.* # Ignore all files
*~ # Ignore temp files
\#* # Ignore temp files
!*/
!*.*/
!.gitignore
!*.conf
关于Gitignore 双星模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332759/