Configure git to track only one file extension
I have one directory tree with many kind of different files. There are 300 directories on the parent directory. Each directory could have other sub directories.
I only want to track *.cocci on all sub directories. Here is my .gitignore:
But it do not work, as the files on sub directories are not tracked. How can I tell git that I only want to track *.cocci on all sub directories?
Read this question.
# Blacklist everything * # Whitelist all directories !*/ # Whitelist the file you're interested in. !*.cocci
Note, this'll track only *.cocci files. Yours doesn't work because you ignore everything (that's the first line), which ignores all subdirectories.
To extend @simont answer, if we wanted to whitelist *.cocci files of a given directory and its subdirectories I would wrongly have entered:
directory/* !directory/*/ !directory/*.cocci
That seems not to be including *.cocci files under directory/subtree.
In order to find all *.cocci files in all sub-directories of directory entered the following:
directory/** !directory/*/ !directory/**/*.cocci
It is impossible to unignore directory by !dir in .gitignore, but then it is still possible to add directory by hand:
git add dir -f
So if the .gitignore file looks like:
Then when you do git add . new *.txt files are then added. New directory will not be auto-added, it have to be added by hand by git add dir -f
Have you tried !*/*.cocci instead of your !*.cocci?