问题
How to I add something to the .gitignore
so that the match is not recursive?
For example, I wish to ignore the directory foo
and the file bar.txt
in the current directory, but not any that exist in subdirectories.
I have tried this for my .gitignore
file:
foo/
bar.txt
But unfortunately git applies this recursively, so that otherdir/bar.txt
and otherdir/foo/
also get ignored, which is not what I want.
(Is there a command in git that shows me all ignored files, and reference the .gitignore
file that is responsible for the file being ignored? This would be useful for debugging.)
回答1:
The solution is to place a leading slash on the .gitignore
entries:
/foo/
/bar.txt
(I thought I tried this before posting on StackOverflow, but clearly I hadn't tried it properly, as this works perfectly.)
回答2:
From the gitignore manpage:
An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again. If a negated pattern matches, this will override lower precedence patterns sources.
So !*
as the first line in your .gitignore will clear all previous patterns.
来源:https://stackoverflow.com/questions/2476718/how-to-i-add-something-to-the-gitignore-so-that-the-match-is-not-recursive