Re: Unexpected recursion in 'git rm'
Adding the mailing list back into Cc.
On Fri, Jul 03, 2026 at 12:34:14PM +0300, Евгений Плискин wrote:
Show 10 quoted lines
> > 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