From: Victor Engmark Date: Tue, 18 Sep 2018 04:03:33 GMT Subject: Cannot negate `*` ignore pattern for directory with space in the name Message-ID: <955f404f-83ed-758e-017b-d6b4a1f69ef7@catalyst.net.nz> To reproduce (from ): $ 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" > "!foo bar" > !foo* > !foo bar/ > !foo\ bar/ > !"foo bar/" > "!foo bar/" > !foo*/ > EOF $ git status --short [no output] The pattern *can* be negated if it only matches directories: $ cat > .gitignore << EOF > */ > !foo\ bar/ > EOF $ git status --short ?? .gitignore ?? foo bar/ I encountered this problem because Visual Studio Code creates a configuration directory called "Code - OSS", and I exclude everything in ~/.config by default to avoid noise in `git status`. $ git --version git version 2.19.0 -- Kind regards Victor Engmark