Re: "git rm" seems to do recursive removal even without "-r"
- From
Jeff King <peff@peff.net>
- Date
- Oct 7, 2017, 19:38 UTC
- Message-ID
- <20171007193805.a2mwzkweonb6ymdk@sigill.intra.peff.net>
- In-Reply-To
- <alpine.LFD.2.21.1710071531090.15738@localhost.localdomain>
On Sat, Oct 07, 2017 at 03:32:24PM -0400, Robert P. J. Day wrote:
Show 17 quoted lines
> > Nothing, because there is nothing to recurse in the pathspecs you've > > given. > > > > Try: > > > > $ git rm drivers > > fatal: not removing 'drivers' recursively without -r > > > > versus > > > > $ git rm -r drivers > > [...removes everything under drivers/...] > > that is not what the man page is saying ... it refers to a "leading" > directory name, not simply a directory name. if it should say simply > "when a directory name is given", then it should be changed to say > that.
It's the leading directory of the files that will be removed.
An earlier part of the manpage (under <file>) also says:
A leading directory name (e.g. dir to remove dir/file1 and dir/file2) can be given to remove all files in the directory, and recursively all sub-directories, but this requires the -r option to be explicitly given.
which perhaps makes it more clear. Later in "-r", we say:
-r
Allow recursive removal when a leading directory name is given.which I guess is the part you're reading. I think it would be equally correct to say "leading directory" or just "directory" there.
Though really, you could give many such directory names, or even match them with a glob. So a more accurate description might be something like:
-r Recursively remove the contents of any directories that match `<file>`.
or something.
-Peff