Gitignore双星模式不起作用

时间:2015-05-19 17:52:47

标签: git bash file gitignore

我尝试使用以下.gitignore配置排除除了我需要的文件以外的所有文件:

*.* # Ignore all files
*~  # Ignore temp files
\#* # Ignore temp files

!.gitignore
!*.conf
!**/*.conf

但是,执行./postgresql/9.3/warm-standby/postgresql.conf时,不会显示文件git status。如何修复我的.gitignore

Git版本是2.1.4

1 个答案:

答案 0 :(得分:1)

首先:归功于@EtanReisner仔细研究这个和@RetoAebersold以提供正确的link

问题在于,使用以下声明(不是您的 .gitignore的一部分),您将两个文件和目录列入黑名单:

*

现在,如果您使用*.*,那通常不会有问题,因为大多数目录都不包含点(.)。然而你的确如此:

*           .*
postgresql/9.3

所以会发生的是所有目录都被列入黑名单。为了能够在目录中添加文件,首先需要将这些目录列入白名单。您可以使用oneliner执行此操作:

!*.*/

换句话说,将以斜杠结尾的所有内容列入白名单。

现在你也可以将这些文件列入白名单:

!*.conf

请注意,不需要将!**/*.conf列入白名单(甚至可能不允许使用白名单,尤其是因为两个连续的星号**仅在git 1.8中启用。*)。

更好的配置文件如下:

*.* # Ignore all files
*~  # Ignore temp files
\#* # Ignore temp files
!*/
!*.*/

!.gitignore
!*.conf