Re: Unexpected recursion in 'git rm'
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Jul 3, 2026, 08:31 UTC
- Message-ID
- <akdzSHrJ4DfdUWoS@pks.im>
- In-Reply-To
- <323134122.20260702104910@gmail.com>
Hi,
On Thu, Jul 02, 2026 at 10:49:10AM +0300, Евгений Плискин wrote:
Show 9 quoted lines
> 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