【问题标题】:Git: inverse ignoring (.gitignore)Git:反向忽略(.gitignore)
【发布时间】:2012-11-15 13:39:45
【问题描述】:

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

【问题讨论】:

  • git stgit status 的别名吗?
  • 是的,当在 .gitconfig 文件中设置时
  • 我试过那些速记命令,svn的坏习惯...
  • 我可以在我的站点上重现此行为。我怀疑不可能“取消忽略”被忽略文件夹的子文件夹。
  • @Nobody 是的,这是可能的。问题是*,但我还没弄清楚原因。

标签: git


【解决方案1】:

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

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

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

如果您想忽略除以! 开头的模式以外的所有内容,您应该将* 移动到.gitignore 的开头


编辑

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

*
!*/
!.vim/plugin/*

【讨论】:

    【解决方案2】:

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

    Examples section here

    【讨论】:

      【解决方案3】:

      另一种方法是只忽略顶级文件和目录,如果需要,在白名单目录中执行相同操作,如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 中的设置的特定情况下)

      【讨论】:

        猜你喜欢
        • 2012-07-12
        • 2020-10-13
        • 2014-11-12
        • 1970-01-01
        • 1970-01-01
        • 2014-07-29
        • 2012-03-15
        • 2021-02-20
        • 2013-09-08
        相关资源
        最近更新 更多