What is the proper syntax for the .gitignore
file to ignore files in a directory?
Would it be
config/databases.yml cache/* log/* data/sql/* lib/filter/base/* lib/form/base/* lib/model/map/* lib/model/om/*
or
/config/databases.yml /cache/* /log/* /data/sql/* /lib/filter/base/* /lib/form/base/* /lib/model/map/* /lib/model/om/*
?
Use Git update-index to ignore changes To resume tracking, run the git update-index command with the --no-skip-worktree flag. Or, you can temporarily stop tracking a file and have Git ignore changes to the file by using the git update-index command with the assume-unchanged flag.
You can create a . gitignore file in your repository's root directory to tell Git which files and directories to ignore when you make a commit. To share the ignore rules with other users who clone the repository, commit the . gitignore file in to your repository.
PATTERN FORMAT
A blank line matches no files, so it can serve as a separator for readability.
A line starting with #
serves as a comment.
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.
If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find a match with a directory. In other words, foo/
will match a directory foo
and paths underneath it, but will not match a regular file or a symbolic link foo
(this is consistent with the way how pathspec works in general in git).
If the pattern does not contain a slash /
, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore
file (relative to the toplevel of the work tree if not from a .gitignore
file).
Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3)
with the FNM_PATHNAME
flag: wildcards in the pattern will not match a /
in the pathname. For example, Documentation/*.html
matches Documentation/git.html
but not Documentation/ppc/ppc.html
or tools/perf/Documentation/perf.html
.
A leading slash matches the beginning of the pathname. For example, /*.c
matches cat-file.c
but not mozilla-sha1/sha1.c
.
git help gitignore
orman gitignore
It would be the former. Go by extensions as well instead of folder structure.
I.e. my example C# development ignore file:
#OS junk files [Tt]humbs.db *.DS_Store #Visual Studio files *.[Oo]bj *.user *.aps *.pch *.vspscc *.vssscc *_i.c *_p.c *.ncb *.suo *.tlb *.tlh *.bak *.[Cc]ache *.ilk *.log *.lib *.sbr *.sdf ipch/ obj/ [Bb]in [Dd]ebug*/ [Rr]elease*/ Ankh.NoLoad #Tooling _ReSharper*/ *.resharper [Tt]est[Rr]esult* #Project files [Bb]uild/ #Subversion files .svn # Office Temp Files ~$*
Update
I thought I'd provide an update from the comments below. Although not directly answering the OP's question, see the following for more examples of .gitignore
syntax.
Community wiki (constantly being updated):
.gitignore for Visual Studio Projects and Solutions
More examples with specific language use can be found here (thanks to Chris McKnight's comment):
https://github.com/github/gitignore
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With