From: Adam Nielsen <admin@xxxxxxxxxx> gitignore.txt: make slash-rules more readable Remove the addition `it is removed for the purpose of the following description` and make clear in which situations a trailing slash is used or not. Increase readability and make all paragraphs valid, even if they are not read in strict order. Replace `otherwise` with the the concrete pattern that is considered in the paragraph to avoid confusion. Add simple examples to point out the significant difference between using or not using a trailing slash. Signed-off-by: Adam J. N. Nielsen <info@xxxxxxxxxxxx> --- Documentation/gitignore.txt | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt index 1c94f08ff4..c6720b0ac4 100644 --- a/Documentation/gitignore.txt +++ b/Documentation/gitignore.txt @@ -89,22 +89,25 @@ PATTERN FORMAT Put a backslash ("`\`") in front of the first "`!`" for patterns that begin with a literal "`!`", for example, "`\!important!.txt`". - - If the pattern ends with a slash, it is removed for the - purpose of the following description, but it would only find + - If the pattern ends with a slash "`/`", 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). + - If the pattern contains no slash "`/`" other then a trailing slash, + then the pattern will match in all directories. In other words, + `foo/` will match `/bar/foo/` and `foo` will match `/bar/bar/foo`. - - Otherwise, Git treats the pattern as a shell glob: "`*`" matches - anything except "`/`", "`?`" matches any one character except "`/`" - and "`[]`" matches one character in a selected range. See + - If the pattern contains a slash "`/`" other then a trailing slash, then + the pattern is always considered from the `.gitignore` file location. + In other words, `foo/bar` will match `/foo/bar` but not `/bar/foo/bar`. + + - The character "`*`" matches anything except a non trailing slash "`/`". + For example, "foo/*" matches "foo/test.json" and "foo/bar/" + but not "foo/bar/test.json". + The character "`?`" matches any one character except "`/`". + The character "`[]`" matches one character in a selected range. See fnmatch(3) and the FNM_PATHNAME flag for a more detailed description. -- 2.17.1