我为我的主文件夹创建了一个存储库。这是我的.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/*
答案 0 :(得分:20)
在第4行中,您忽略了*
的所有内容。这会覆盖先前的否定模式。来自man page:
在一个优先级内,最后一个匹配模式决定 结果
“优先级”指的是.gitignore
和$GIT_DIR/info/exclude
等忽略模式的不同来源。
如果你想忽略除!
开头的所有模式,你应该将*
移到.gitignore
的开头
修改强>
我在another question on SO的帮助下找到了解决方案:
*
!*/
!.vim/plugin/*
答案 1 :(得分:2)
尝试将否定的行(以!
开头的行)移动到.gitignore
文件的底部。
答案 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设置的特定情况下)