Git:反向忽略(.gitignore)

时间:2012-11-15 13:39:46

标签: git

我为我的主文件夹创建了一个存储库。这是我的.gitignore文件:

!.vim/plugin/*
!.vim/doc/*
.*
*
.viminfo
.vim/.netrwhist
.vim-fuf-data/file/stats
bin/dwm/dwm

所以,当我在.vim/plugin中创建一个新文件时,我希望在git status此文件显示后,但是没有..为什么?

编辑:在一对答案后,我改变了反向忽略行的位置,但是问题是相同的:我在.vim/plugin文件夹中创建的新文件是在git status之后没有显示..

.*
*
.viminfo
.vim/.netrwhist
.vim-fuf-data/file/stats
bin/dwm/dwm
!.vim/plugin/*
!.vim/doc/*

3 个答案:

答案 0 :(得分:20)

在第4行中,您忽略了*的所有内容。这会覆盖先前的否定模式。来自man page

  

在一个优先级内,最后一个匹配模式决定   结果

“优先级”指的是.gitignore$GIT_DIR/info/exclude等忽略模式的不同来源。

如果你想忽略除!开头的所有模式,你应该将*移到.gitignore的开头


修改

我在another question on SO的帮助下找到了解决方案:

*
!*/
!.vim/plugin/*

答案 1 :(得分:2)

尝试将否定的行(以!开头的行)移动到.gitignore文件的底部。

请参阅Examples section here

答案 2 :(得分:0)

另一种方法是只忽略顶级文件和目录,并在白名单目录中执行相同的操作,如this answer to a related question

例如,我的.gitignore现在看起来像这样

/*
!.gitignore
!.vimrc
!.bashrc
!.vim/
.vim/.netrwhist
!.gconf/
.gconf/apps/*
!.gconf/apps/gnome-terminal
!bin/

Deve的答案使得git非常慢,因为它会搜索你homedir下的所有目录。 (在使用git进行homedir设置的特定情况下)