From: Patrick Steinhardt Date: Fri, 03 Jul 2026 08:31:04 GMT Subject: Re: Unexpected recursion in 'git rm' Message-ID: In-Reply-To: <323134122.20260702104910@gmail.com> Hi, On Thu, Jul 02, 2026 at 10:49:10AM +0300, Евгений Плискин wrote: > Hello. > > The following git command does recurse directories as contrary to the > reference (https://git-scm.com/docs/git-rm): > > git rm -n *.json > > Without directory specification before '*.json' this command is not > expected to recurse directories, but it really does. This is expected behaviour, as the argument to git-rm(1) is a pathspec, and "*" matches directory separators by default, see also gitglossary(7) under "pathspec": • the pathspec up to the last slash represents a directory prefix. The scope of that pathspec is limited to that subtree. • the rest of the pathspec is a pattern for the remainder of the pathname. Paths relative to the directory prefix will be matched against that pattern using fnmatch(3); in particular, * and ? can match directory separators. For example, Documentation/*.jpg will match all .jpg files in the Documentation subtree, including Documentation/chapter_1/figure_1.jpg. Could you maybe clarify which part of git-rm(1) made you think that this wouldn't happen? Thanks! Patrick