On Tue, Sep 18, 2018 at 6:13 AM Victor Engmark
<[email protected]> wrote:
>
> To reproduce (from <https://unix.stackexchange.com/q/469708/3645>):
>
> $ cd "$(mktemp --directory)"
> $ mkdir foo\ bar
> $ touch foo\ bar/test
> $ git init
> Initialized empty Git repository in /tmp/tmp.iGmBR6y2xR/.git/
> $ git status --short
> ?? foo bar/
> $ cat > .gitignore << EOF
> > *
> > !foo bar
> > !foo\ bar
> > !"foo bar"

No need to quote, either with double quotes or backslashes. They are
interpreted as literal " and \

> $ git status --short
> [no output]

It's not exactly a bug, more like a trap. '*' matches anything, at
every level. So even if you negate 'foo bar', when we check 'foo
bar/test', '*' pattern applies again and ignores 'foo bar/test'. If
the first line in .gitignore is /* instead of * (to keep match
anything at the top level directory only), then it should work.
-- 
Duy

Reply via email to