.gitignore ignore all files then recursively allow *.foo
There’s already several questions similar to this, but none of the answers work for me.
I want to ignore everything in the folders below my repository except files with *.foo
(If anyone is wondering how this can be justified – I’m actually making a git repository for all my “Logic” projects – music software on the mac – but I only want to store the actual project files *.logic)
I’m going to spell it out, so we’re all on the same plate.
Here’s what I do, starting from scratch:
mkdir temp cd temp mkdir testdir cd testdir touch include.foo touch dontinclude.bad cd.. git init touch .gitignore
Paste this in to .gitignore
# Ignore all /* # But not these files... !.gitignore !*.foo
And the only untracked file is .gitignore
if I typed ‘git add .’ – no change, only .gitignore is seen and my 2 files are ignored.
Why doesn’t this work and how can you change the procedure above to make it work?
Here’s the extremely similar question where I got the .gitignore file from.
I’m using git –version 1.7.7 (also tried 1.7.3) – .gitignore to ignore all files, then recursively allows files of a certain type
One Solution collect form web for “.gitignore ignore all files then recursively allow *.foo”
Your problem is that the
/* pattern at the beginning is matching all files and directories at the top level – including
testdir, so everything inside
testdir is ignored.
This is what you want:
# Ignore everything * # Don't ignore directories, so we can recurse into them !*/ # Don't ignore .gitignore and *.foo files !.gitignore !*.foo
When you do a
git add . with this config, you should find you have only
*.foo files listed as changes to be committed.