Web lists-archives.com

Re: "git rm" seems to do recursive removal even without "-r"

Robert P. J. Day wrote:

 was just testing variations of "git rm", and man page claims:

-r Allow recursive removal when a leading directory name is given.

i tested this on the "pro git" book repo, which contains a top-level "book/" directory, and quite a number of "*.asc" files in various subdirectories one or more levels down. i ran:

 $ git rm book/\*.asc

and it certainly seemed to delete *all* "*.asc" files no matter where they were under book/, even without the "-r" option.

 am i misunderstanding something?

By shell-escaping the *, you're letting git perform the file glob. The DISCUSSION section of git-rm(1) says "File globbing matches across directory boundaries."

# With bash performing file globbing
$ git rm -n Documentation/*.txt | wc -l

# With git performing file globbing
$ git rm -n Documentation/\*.txt | wc -l

Whenever you find yourself on the side of the majority, it is time to
pause and reflect.
   -- Mark Twain