git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Matt HunterNext: Phillip Wood
Message 3 of 8 in “Unexpected recursion in 'git rm'”
  1. Евгений ПлискинJul 2, 2026
  2. Matt HunterJul 3, 2026
  3. Patrick SteinhardtJul 3, 2026
  4. Phillip WoodJul 3, 2026
  5. Mikael MagnussonJul 3, 2026
  6. Junio C HamanoJul 3, 2026
  7. Patrick SteinhardtJul 3, 2026
  8. Matt HunterJul 3, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.