Home > OS >  Why .config directory is not listed when excluded from gitignore using wildcard (*) and git status?
Why .config directory is not listed when excluded from gitignore using wildcard (*) and git status?

Time:11-25

I know the question is a bit cryptic, I couldn't word it exactly in a single sentence (might need some help on that).

I initialized git in my home directory (i.e, ~/, on Arch Linux) to backup my dot-files (mainly configs). I want to include every file and folder in it except the ones starting with a . (like .config/ and .bashrc).

So I made a .gitignore file whose contents are:

# Ignore everything
*

# Except these files and folders
!.*

But the problem is when I list all the untracked files (git status), it doesn't list the .config/ directory for some reason. I tried playing around with .gitignore and adding

!*/

shows all directories including .config/ and also Documents, Downloads etc, which I don't want to include.

And instead adding

!.*/

shows every other directory that starts with a . like .cache/, .vim/ etc. But for some reason the .config/ doesn't show up.

I even tried

!.config/

and

!.config

it doesn't work. The only thing that works is !*/ (all directories, which is not what I want)

Any way to solve this. Its really annoying.

[Solved]: it was a bug

The bug has been fixed in git version 2.34.1

Check the accepted answer.

CodePudding user response:

TL;DR

After the bug fix, you'll want what you put in your "kinda solved" section, or something similar. I think you'll want what I put in my "bottom line" section, really:

/*
!/.*

Long

As jthill noted in a comment, there is a bug in the .gitignore wildcard handling in Git 2.34.0, which will be fixed in 2.34.1. In this case I think the bug is making your wildcarding work better than it would otherwise, though.

  • Related