Thread (1 message) 1 message, 1 author, 1d ago

Re: Unexpected recursion in 'git rm'

From: Patrick Steinhardt <hidden>
Date: 2026-07-03 12:39:52

Adding the mailing list back into Cc.

On Fri, Jul 03, 2026 at 12:34:14PM +0300, Евгений Плискин wrote:
quoted
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?
Thank you for your reply. I believe you are correct.

I have made more research and found a way to remove files in current directory only without recursion into subdirectories:
     git rm -n ':(glob)*.json'
Yup, that wouldn't cross directory separators indeed.

Patrick
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help