{"thread":{"id":"8172","subject":"[PATCH] user-manual: Add section on ignoring files","startedAt":"2007-05-15T22:47:52Z","lastAt":"2007-05-16T07:38:57Z","messageCount":9,"participants":["Johan Herland","Jakub Narebski","Junio C Hamano","J. Bruce Fields"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"42257","messageId":"200705160047.52717.johan@herland.net","threadId":"8172","inReplyTo":null,"subject":"[PATCH] user-manual: Add section on ignoring files","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2007-05-15T22:47:52Z","receivedAt":"2007-05-15T22:47:52Z","isPatch":true,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"The todo list at the end of the user manual says that something must be\nsaid about .gitignore. Also, there seems to be a lack of documentation\non how to choose between the various types of ignore files (.gitignore\nvs. .git/info/exclude, etc.).\n\nThis patch adds a section on ignoring files which try to introduce how\nto tell git about ignored files, and how the different strategies\ncomplement eachother.\n\nThe syntax of exclude patterns is explained in a simplified manner, with\na reference to git-ls-files(1) which already contains a more thorough\nexplanation.\n\nSigned-off-by: Johan Herland <johan@herland.net>\n---\nWriting this section was triggered by Randal L. Schwartz on #git lamenting\nthe lack of documentation on the difference between .gitignore and\n.git/info/exclude. Hope this is what you're looking for, Randal. :)\n\n Documentation/user-manual.txt |   69 +++++++++++++++++++++++++++++++++++++++-\n 1 files changed, 67 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt\nindex a7abeaa..4ca30dd 100644\n--- a/Documentation/user-manual.txt\n+++ b/Documentation/user-manual.txt\n@@ -1188,6 +1188,73 @@ description.  Tools that turn commits into email, for example, use\n the first line on the Subject line and the rest of the commit in the\n body.\n \n+[[ignoring-files]]\n+Ignoring files\n+--------------\n+\n+A project will often generate files that you do 'not' want to track with git.\n+This typically includes files generated by a build process or temporary\n+backup files made by your editor. Of course, 'not' tracking files with git\n+is just a matter of 'not' calling \"git add\" on them. But it might be\n+annoying to have these untracked files automatically showing up in the\n+output of \"git status\", in the commit message template, etc.\n+\n+Git therefore provides \"exclude patterns\" for telling git which files to\n+actively ignore. Exclude patterns are thoroughly explained in the\n+\"Exclude Patterns\" section of the gitlink:git-ls-files[1] manual page,\n+but the heart of the concept is simply a list of files which git should\n+ignore. Entries in the list may contain globs to specify multiple files,\n+or may be prefixed by \"`!`\" to explicitly include (un-ignore) a file.\n+The following example should illustrate such patterns:\n+\n+-------------------------------------------------\n+# Lines starting with '#' are considered comments.\n+# Ignore foo.txt.\n+foo.txt\n+# Ignore (generated) html files,\n+*.html\n+# except foo.html which is maintained by hand.\n+!foo.html\n+# Ignore objects and archives.\n+*.[oa]\n+-------------------------------------------------\n+\n+The next question is where to put these exclude patterns so that git can\n+find them. Git looks for exclude patterns in the following files:\n+\n+`.gitignore` files in your working tree:::\n+\t   You may store multiple `.gitignore` files at various locations in your\n+\t   working tree. Each `.gitignore` file is applied to the directory where\n+\t   it's located, including its subdirectories. Furthermore, the\n+\t   `.gitignore` files can be tracked like any other files in your working\n+\t   tree; just do a `git add .gitignore` and commit. `.gitignore` is\n+\t   therefore the perfect place to put exclude patterns that match\n+\t   ignored files that pop up in every copy of your project, such as\n+\t   build output files (e.g. `\\*.o`), etc.\n+`.git/info/exclude` in your repo:::\n+\t   Exclude patterns in this file are applied to the working tree as a\n+\t   whole. Since the file is not located in your working tree, it does\n+\t   not follow push/pull/clone like `.gitignore` can do. This is therefore\n+\t   the best place to put exclude patterns that you want to keep local\n+\t   to your copy of the repo, such as temporary backups made by your\n+\t   editor (e.g. `\\*~`), etc.\n+The file specified by the `core.excludesfile` config directive:::\n+\t   By setting the `core.excludesfile` config directive you can tell git\n+\t   where to find more exclude patterns (see gitlink:git-config[1] for\n+\t   more information on configuration options). This config directive\n+\t   can be set in the per-repo `.git/config` file, in which case the\n+\t   exclude patterns will apply to that repo only. Alternatively, you\n+\t   can set the directive in the global `~/.gitconfig` file to apply\n+\t   the exclude pattern to all your git repos. As with the above\n+\t   `.git/info/exclude` (and, indeed, with git config directives in\n+\t   general), this directive does not follow push/pull/clone, but stays\n+\t   local to your repo(s).\n+\n+[NOTE]\n+In addition to the above alternatives, there are git commands that can take\n+exclude patterns directly on the command line. See gitlink:git-ls-files[1]\n+for an example of this.\n+\n [[how-to-merge]]\n How to merge\n ------------\n@@ -3184,8 +3251,6 @@ Think about how to create a clear chapter dependency graph that will\n allow people to get to important topics without necessarily reading\n everything in between.\n \n-Say something about .gitignore.\n-\n Scan Documentation/ for other stuff left out; in particular:\n \thowto's\n \tsome of technical/?\n-- \n1.5.1.4\n"},{"id":"42263","messageId":"f2dffu$so6$2@sea.gmane.org","threadId":"8172","inReplyTo":"200705160047.52717.johan@herland.net","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-05-15T23:24:48Z","receivedAt":"2007-05-15T23:24:48Z","isPatch":true,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Johan Herland wrote:\n\n> +A project will often generate files that you do 'not' want to track with git.\n> +This typically includes files generated by a build process or temporary\n> +backup files made by your editor. Of course, 'not' tracking files with git\n> +is just a matter of 'not' calling \"git add\" on them. But it might be\n> +annoying to have these untracked files automatically showing up in the\n> +output of \"git status\", in the commit message template, etc.\n\n_And_ ignored files affect globbing and path patterns (\"git add .\" or\n\"git add *.txt\"would not add ignored files), and --all options \n(\"git commit -a\" would not commit changed but ignored files).\n\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"42266","messageId":"7v1whhis16.fsf@assigned-by-dhcp.cox.net","threadId":"8172","inReplyTo":"200705160047.52717.johan@herland.net","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2007-05-15T23:30:29Z","receivedAt":"2007-05-15T23:30:29Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johan Herland <johan@herland.net> writes:\n\n> +[[ignoring-files]]\n> +Ignoring files\n> +--------------\n\nLooks good ;-).\n\n> +A project will often generate files that you do 'not' want to track with git.\n> +This typically includes files generated by a build process or temporary\n> +backup files made by your editor. Of course, 'not' tracking files with git\n> +is just a matter of 'not' calling \"git add\" on them. But it might be\n> +annoying to have these untracked files automatically showing up in the\n> +output of \"git status\", in the commit message template, etc.\n\nAnother point about this annoyance factor is that \"git-add .\"\ndoes not add files that are excluded.\n\n> +Git therefore provides \"exclude patterns\" for telling git which files to\n> +actively ignore. Exclude patterns are thoroughly explained in the\n> +\"Exclude Patterns\" section of the gitlink:git-ls-files[1] manual page,\n> +but the heart of the concept is simply a list of files which git should\n> +ignore. Entries in the list may contain globs to specify multiple files,\n> +or may be prefixed by \"`!`\" to explicitly include (un-ignore) a file.\n\nI think you can safely teach the reader that later entries\noverride the earlier ones here, as you are about to give such an\nexample just below.\n\n> +The following example should illustrate such patterns:\n> +\n> +-------------------------------------------------\n> +# Lines starting with '#' are considered comments.\n> +# Ignore foo.txt.\n> +foo.txt\n> +# Ignore (generated) html files,\n> +*.html\n> +# except foo.html which is maintained by hand.\n> +!foo.html\n> +# Ignore objects and archives.\n> +*.[oa]\n> +-------------------------------------------------\n\n> +The next question is where to put these exclude patterns so that git can\n> +find them. Git looks for exclude patterns in the following files:\n> +\n> +`.gitignore` files in your working tree:::\n> +\t   You may store multiple `.gitignore` files at various locations in your\n> +\t   working tree. Each `.gitignore` file is applied to the directory where\n> +\t   it's located, including its subdirectories. Furthermore, the\n> +\t   `.gitignore` files can be tracked like any other files in your working\n> +\t   tree; just do a `git add .gitignore` and commit. `.gitignore` is\n> +\t   therefore the perfect place to put exclude patterns that match\n> +\t   ignored files that pop up in every copy of your project, such as\n> +\t   build output files (e.g. `\\*.o`), etc.\n\n... and more importantly, the patterns that are _meant_ to be\nshared by all the project participants.  I think it is probably\neasier to follow if you explain that in-tree .gitignore is not\nabout personal preference upfront in this section, rather than\nsaying it in .git/info/exclude section.\n"},{"id":"42267","messageId":"200705160131.40772.johan@herland.net","threadId":"8172","inReplyTo":"f2dffu$so6$2@sea.gmane.org","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2007-05-15T23:31:40Z","receivedAt":"2007-05-15T23:31:40Z","isPatch":true,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"On Wednesday 16 May 2007, Jakub Narebski wrote:\n> Johan Herland wrote:\n> \n> > +A project will often generate files that you do 'not' want to track with git.\n> > +This typically includes files generated by a build process or temporary\n> > +backup files made by your editor. Of course, 'not' tracking files with git\n> > +is just a matter of 'not' calling \"git add\" on them. But it might be\n> > +annoying to have these untracked files automatically showing up in the\n> > +output of \"git status\", in the commit message template, etc.\n> \n> _And_ ignored files affect globbing and path patterns (\"git add .\" or\n> \"git add *.txt\"would not add ignored files), and --all options \n> (\"git commit -a\" would not commit changed but ignored files).\n\nYes, of course. I forgot about that \"minor\" point...\n\n\nHave fun!\n\n...Johan\n\n-- \nJohan Herland, <johan@herland.net>\nwww.herland.net\n"},{"id":"42271","messageId":"200705160231.40486.johan@herland.net","threadId":"8172","inReplyTo":"7v1whhis16.fsf@assigned-by-dhcp.cox.net","subject":"[PATCH] user-manual: Add section on ignoring files","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2007-05-16T00:31:40Z","receivedAt":"2007-05-16T00:31:40Z","isPatch":true,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"The todo list at the end of the user manual says that something must be\nsaid about .gitignore. Also, there seems to be a lack of documentation\non how to choose between the various types of ignore files (.gitignore\nvs. .git/info/exclude, etc.).\n\nThis patch adds a section on ignoring files which try to introduce how\nto tell git about ignored files, and how the different strategies\ncomplement eachother.\n\nThe syntax of exclude patterns is explained in a simplified manner, with\na reference to git-ls-files(1) which already contains a more thorough\nexplanation.\n\nSigned-off-by: Johan Herland <johan@herland.net>\n---\nRevised version with fixes from Junio and Jakub. Thanks. :)\n\n Documentation/user-manual.txt |   71 +++++++++++++++++++++++++++++++++++++++-\n 1 files changed, 69 insertions(+), 2 deletions(-)\n\ndiff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt\nindex a7abeaa..750e55a 100644\n--- a/Documentation/user-manual.txt\n+++ b/Documentation/user-manual.txt\n@@ -1188,6 +1188,75 @@ description.  Tools that turn commits into email, for example, use\n the first line on the Subject line and the rest of the commit in the\n body.\n \n+[[ignoring-files]]\n+Ignoring files\n+--------------\n+\n+A project will often generate files that you do 'not' want to track with git.\n+This typically includes files generated by a build process or temporary\n+backup files made by your editor. Of course, 'not' tracking files with git\n+is just a matter of 'not' calling \"`git add`\" on them. But it quickly becomes\n+annoying to have these untracked files lying around; e.g. they make\n+\"`git add .`\" and \"`git commit -a`\" practically useless, and they keep\n+showing up in the output of \"`git status`\", etc.\n+\n+Git therefore provides \"exclude patterns\" for telling git which files to\n+actively ignore. Exclude patterns are thoroughly explained in the\n+\"Exclude Patterns\" section of the gitlink:git-ls-files[1] manual page,\n+but the heart of the concept is simply a list of files which git should\n+ignore. Entries in the list may contain globs to specify multiple files,\n+or may be prefixed by \"`!`\" to explicitly include (un-ignore) a previously\n+excluded (ignored) file (i.e. later exclude patterns override earlier ones).\n+The following example should illustrate such patterns:\n+\n+-------------------------------------------------\n+# Lines starting with '#' are considered comments.\n+# Ignore foo.txt.\n+foo.txt\n+# Ignore (generated) html files,\n+*.html\n+# except foo.html which is maintained by hand.\n+!foo.html\n+# Ignore objects and archives.\n+*.[oa]\n+-------------------------------------------------\n+\n+The next question is where to put these exclude patterns so that git can\n+find them. Git looks for exclude patterns in the following files:\n+\n+`.gitignore` files in your working tree:::\n+\t   You may store multiple `.gitignore` files at various locations in your\n+\t   working tree. Each `.gitignore` file is applied to the directory where\n+\t   it's located, including its subdirectories. Furthermore, the\n+\t   `.gitignore` files can be tracked like any other files in your working\n+\t   tree; just do a \"`git add .gitignore`\" and commit. `.gitignore` is\n+\t   therefore the right place to put exclude patterns that are meant to\n+\t   be shared between all project participants, such as build output files\n+\t   (e.g. `\\*.o`), etc.\n+`.git/info/exclude` in your repo:::\n+\t   Exclude patterns in this file are applied to the working tree as a\n+\t   whole. Since the file is not located in your working tree, it does\n+\t   not follow push/pull/clone like `.gitignore` can do. This is therefore\n+\t   the place to put exclude patterns that are local to your copy of the\n+\t   repo (i.e. 'not' shared between project participants), such as\n+\t   temporary backup files made by your editor (e.g. `\\*~`), etc.\n+The file specified by the `core.excludesfile` config directive:::\n+\t   By setting the `core.excludesfile` config directive you can tell git\n+\t   where to find more exclude patterns (see gitlink:git-config[1] for\n+\t   more information on configuration options). This config directive\n+\t   can be set in the per-repo `.git/config` file, in which case the\n+\t   exclude patterns will apply to that repo only. Alternatively, you\n+\t   can set the directive in the global `~/.gitconfig` file to apply\n+\t   the exclude pattern to all your git repos. As with the above\n+\t   `.git/info/exclude` (and, indeed, with git config directives in\n+\t   general), this directive does not follow push/pull/clone, but remain\n+\t   local to your repo(s).\n+\n+[NOTE]\n+In addition to the above alternatives, there are git commands that can take\n+exclude patterns directly on the command line. See gitlink:git-ls-files[1]\n+for an example of this.\n+\n [[how-to-merge]]\n How to merge\n ------------\n@@ -3184,8 +3253,6 @@ Think about how to create a clear chapter dependency graph that will\n allow people to get to important topics without necessarily reading\n everything in between.\n \n-Say something about .gitignore.\n-\n Scan Documentation/ for other stuff left out; in particular:\n \thowto's\n \tsome of technical/?\n-- \n1.5.1.4\n"},{"id":"42274","messageId":"7vhcqdha4b.fsf@assigned-by-dhcp.cox.net","threadId":"8172","inReplyTo":"200705160231.40486.johan@herland.net","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2007-05-16T00:42:44Z","receivedAt":"2007-05-16T00:42:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johan Herland <johan@herland.net> writes:\n\n> +This typically includes files generated by a build process or temporary\n> +backup files made by your editor. Of course, 'not' tracking files with git\n> +is just a matter of 'not' calling \"`git add`\" on them. But it quickly becomes\n> +annoying to have these untracked files lying around; e.g. they make\n> +\"`git add .`\" and \"`git commit -a`\" practically useless, and they keep\n\nI think we would want to s/and \"`git commit -a`//; if you start\ntracking the file, .gitignore would not interfere with it AFAIK.\n\nOther than that,\n\n\tAcked-by: Junio C Hamano <junkio@cox.net>\n"},{"id":"42283","messageId":"20070516033032.GA20022@fieldses.org","threadId":"8172","inReplyTo":"200705160231.40486.johan@herland.net","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"J. Bruce Fields","fromEmail":"bfields@fieldses.org","sentAt":"2007-05-16T03:30:32Z","receivedAt":"2007-05-16T03:30:32Z","isPatch":true,"sender":{"key":"bfields@citi.umich.edu","avatar":null},"body":"On Wed, May 16, 2007 at 02:31:40AM +0200, Johan Herland wrote:\n> The todo list at the end of the user manual says that something must be\n> said about .gitignore. Also, there seems to be a lack of documentation\n> on how to choose between the various types of ignore files (.gitignore\n> vs. .git/info/exclude, etc.).\n\nThanks for doing this!\n\n> --- a/Documentation/user-manual.txt\n> +++ b/Documentation/user-manual.txt\n> @@ -1188,6 +1188,75 @@ description.  Tools that turn commits into email, for example, use\n>  the first line on the Subject line and the rest of the commit in the\n>  body.\n>  \n> +[[ignoring-files]]\n> +Ignoring files\n> +--------------\n\nThis looks like a sensible place to add it....\n\n> +A project will often generate files that you do 'not' want to track with git.\n> +This typically includes files generated by a build process or temporary\n> +backup files made by your editor. Of course, 'not' tracking files with git\n> +is just a matter of 'not' calling \"`git add`\" on them. But it quickly becomes\n> +annoying to have these untracked files lying around; e.g. they make\n> +\"`git add .`\" and \"`git commit -a`\" practically useless, and they keep\n> +showing up in the output of \"`git status`\", etc.\n\nIt might be cute to introduce this with an example; \"suppose you just\nimported a new project into git, build it, and run git-status.  The\noutput you get might look like:...\" etc.\n\n> +Git therefore provides \"exclude patterns\" for telling git which files to\n> +actively ignore. Exclude patterns are thoroughly explained in the\n> +\"Exclude Patterns\" section of the gitlink:git-ls-files[1] manual page,\n> +but the heart of the concept is simply a list of files which git should\n> +ignore. Entries in the list may contain globs to specify multiple files,\n> +or may be prefixed by \"`!`\" to explicitly include (un-ignore) a previously\n> +excluded (ignored) file (i.e. later exclude patterns override earlier ones).\n\nIt might simplify things just to start off by talking about .gitignore\nexclusively, rather than talking about exclude patterns in general;\nsomething like: \"Git therefore allows you to provide .gitignore files,\nwhich consist of a list of entries, processed in order from top to\nbottom, each telling git about some files to ignore....\"\n\nThen introduce the other options at the end: \"for exclude patterns that\nyou want to be used just by one repo, or by a group of repos on one\ncomputer, you can use .git/info/exclude or core.excludesfile.\"  In fact,\nI'd be *almost* tempted just to leave the discussion of these local\nexclude files at that, and refer elsewhere for the details.  Do people\nreally find them useful?\n\nBut those are nits.  I'll happily take it as is and then revise\nlater....\n\n--b.\n"},{"id":"42300","messageId":"200705160928.00900.johan@herland.net","threadId":"8172","inReplyTo":"7vhcqdha4b.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2007-05-16T07:28:00Z","receivedAt":"2007-05-16T07:28:00Z","isPatch":true,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"On Wednesday 16 May 2007, Junio C Hamano wrote:\n> Johan Herland <johan@herland.net> writes:\n> \n> > +This typically includes files generated by a build process or temporary\n> > +backup files made by your editor. Of course, 'not' tracking files with git\n> > +is just a matter of 'not' calling \"`git add`\" on them. But it quickly becomes\n> > +annoying to have these untracked files lying around; e.g. they make\n> > +\"`git add .`\" and \"`git commit -a`\" practically useless, and they keep\n> \n> I think we would want to s/and \"`git commit -a`//; if you start\n> tracking the file, .gitignore would not interfere with it AFAIK.\n\nYou're right. \"git commit -a\" doesn't actually add untracked files at all \n(you still have to do \"git add\", anyway). Don't know what I was thinking.\nFeel free to edit.\n\n\n...Johan\n\n-- \nJohan Herland, <johan@herland.net>\nwww.herland.net\n"},{"id":"42302","messageId":"200705160938.57608.johan@herland.net","threadId":"8172","inReplyTo":"20070516033032.GA20022@fieldses.org","subject":"Re: [PATCH] user-manual: Add section on ignoring files","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2007-05-16T07:38:57Z","receivedAt":"2007-05-16T07:38:57Z","isPatch":true,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"On Wednesday 16 May 2007, J. Bruce Fields wrote:\n> On Wed, May 16, 2007 at 02:31:40AM +0200, Johan Herland wrote:\n> > The todo list at the end of the user manual says that something must be\n> > said about .gitignore. Also, there seems to be a lack of documentation\n> > on how to choose between the various types of ignore files (.gitignore\n> > vs. .git/info/exclude, etc.).\n> \n> Thanks for doing this!\n> \n> > --- a/Documentation/user-manual.txt\n> > +++ b/Documentation/user-manual.txt\n> > @@ -1188,6 +1188,75 @@ description.  Tools that turn commits into email, for example, use\n> >  the first line on the Subject line and the rest of the commit in the\n> >  body.\n> >  \n> > +[[ignoring-files]]\n> > +Ignoring files\n> > +--------------\n> \n> This looks like a sensible place to add it....\n> \n> > +A project will often generate files that you do 'not' want to track with git.\n> > +This typically includes files generated by a build process or temporary\n> > +backup files made by your editor. Of course, 'not' tracking files with git\n> > +is just a matter of 'not' calling \"`git add`\" on them. But it quickly becomes\n> > +annoying to have these untracked files lying around; e.g. they make\n> > +\"`git add .`\" and \"`git commit -a`\" practically useless, and they keep\n> > +showing up in the output of \"`git status`\", etc.\n> \n> It might be cute to introduce this with an example; \"suppose you just\n> imported a new project into git, build it, and run git-status.  The\n> output you get might look like:...\" etc.\n\nThis would of course work as well, but I was trying to keep it as short as possible. \nIgnoring files isn't a big part of what git is really about, so I'd like for this\nsection to stay as short and to-the-point as possible.\n\n> > +Git therefore provides \"exclude patterns\" for telling git which files to\n> > +actively ignore. Exclude patterns are thoroughly explained in the\n> > +\"Exclude Patterns\" section of the gitlink:git-ls-files[1] manual page,\n> > +but the heart of the concept is simply a list of files which git should\n> > +ignore. Entries in the list may contain globs to specify multiple files,\n> > +or may be prefixed by \"`!`\" to explicitly include (un-ignore) a previously\n> > +excluded (ignored) file (i.e. later exclude patterns override earlier ones).\n> \n> It might simplify things just to start off by talking about .gitignore\n> exclusively, rather than talking about exclude patterns in general;\n> something like: \"Git therefore allows you to provide .gitignore files,\n> which consist of a list of entries, processed in order from top to\n> bottom, each telling git about some files to ignore....\"\n> \n> Then introduce the other options at the end: \"for exclude patterns that\n> you want to be used just by one repo, or by a group of repos on one\n> computer, you can use .git/info/exclude or core.excludesfile.\"  In fact,\n> I'd be *almost* tempted just to leave the discussion of these local\n> exclude files at that, and refer elsewhere for the details.  Do people\n> really find them useful?\n\nSounds like a good idea. Feel free to rewrite. But the original impetus for \nthe section was Randal's question on the difference between the various \nignore files, so make sure that's still in there somewhere.\n\n> But those are nits.  I'll happily take it as is and then revise\n> later....\n\nThanks :)\n\n\nHave fun!\n\n...Johan\n\n-- \nJohan Herland, <johan@herland.net>\nwww.herland.net\n"}]}