23

我为我的主文件夹创建了一个存储库。这是我的.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/*
4

3 回答 3

25

在第 4 行中,您使用*. 这会覆盖先前的否定模式。从手册页

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

其中“优先级”表示忽略模式的不同来源,例如.gitignore$GIT_DIR/info/exclude

如果您想忽略除以您开头的模式之外的所有内容,则应!*.gitignore


编辑

我在 SO 上的另一个问题的帮助下找到了解决方案:

*
!*/
!.vim/plugin/*
于 2012-11-15T13:51:52.717 回答
2

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

请参阅此处的示例部分

于 2012-11-15T13:51:14.810 回答
2

另一种方法是仅忽略顶级文件和目录,并在白名单目录中根据需要执行相同操作,如相关问题的此答案

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

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

Deve 的回答让 git 很慢,因为它会搜索你的 homedir 下的所有目录。(在将 git 用于 homedir 中的设置的特定情况下)

于 2014-03-14T14:12:21.900 回答