2023-10-29 08:00:06

Git忽略异常

我有一个gitignore文件,使git忽略*.dll文件,这实际上是我想要的行为。然而,如果我想要一个异常(即能够提交foo.dll),我该如何实现这一点?


当前回答

只需添加!在排除规则之前。

根据gitignore手册页:

模式有以下格式: ... 一个可选的前缀!这就否定了模式;任何被前一个模式排除的匹配文件将被重新包含。如果匹配一个否定的模式,这将覆盖低优先级的模式源。

其他回答

.gitignore中的foo.dll,或者(每次!)git add -f foo.dll

你可以简单地添加-f path/to/foo.dll。

.gitignore只忽略通常跟踪和git添加之类的文件。

从Git 2.7.0开始,Git会考虑异常情况。官方发布说明如下:

允许后面的“!”/abc/def”来覆盖之前的“/abc” 出现在同一个.gitignore文件中,使其更容易表达 “/abc目录下的所有内容都被忽略,除了…”

https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt

edit:显然,自从Git 2.8.0以来,这个功能就不能再工作了

Use:

*.dll    #Exclude all dlls
!foo.dll #Except for foo.dll

从gitignore:

一个可选的前缀!这就否定了模式;任何被前一个模式排除的匹配文件将被重新包含。如果匹配一个否定的模式,这将覆盖低优先级的模式源。

这是我用README做的。Md文件在每个目录:

/data/*
!/data/README.md

!/data/input/
/data/input/*
!/data/input/README.md

!/data/output/
/data/output/*
!/data/output/README.md