# [Feature request] Add -u option to git rm to delete untracked files

5 messages from 2020-05-26 to 2020-05-27. Participants: Erik Janssen, Jeff King, Đoàn Trần Công Danh, Randall S. Becker.
Thread: https://gitlist.dev/t/53559

## Erik Janssen, 2020-05-26 21:21

Subject: [Feature request] Add -u option to git rm to delete untracked files
Message-ID: <1098602171.79502.1590528083387@mail.ziggo.nl>
URL: https://gitlist.dev/e/1098602171.79502.1590528083387%40mail.ziggo.nl

```
Hello All,


Would it be feasible to add a -u option to git rm to specify that I also want a file deleted if it is not tracked by git?
Currently, git rm -f can remove files in whatever state it seems, except when it is untracked. 
By allowing a -u option (-u: also delete untracked files) I would be sure that the file is gone while it would also make sure that it doesn't break past behaviour where people perhaps rely on git rm to leave untracked files alone.


Kind regards,


Erik Janssen.

```

## Jeff King, 2020-05-27 07:34

Subject: Re: [Feature request] Add -u option to git rm to delete untracked files
Message-ID: <20200527073432.GD4006199@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20200527073432.GD4006199%40coredump.intra.peff.net
In-Reply-To: <1098602171.79502.1590528083387@mail.ziggo.nl>

```
On Tue, May 26, 2020 at 11:21:23PM +0200, Erik Janssen wrote:

> Would it be feasible to add a -u option to git rm to specify that I
> also want a file deleted if it is not tracked by git?

It might be a little tricky, as I suspect the code is starting from the
set of tracked files, and then applying the arguments of pathspecs (but
I didn't look too carefully, so I might be wrong).

The "git clean" command is made for this (and starts by iterating over
the filesystem), and does exactly what you want. But I guess you are
hoping for a state where you can just run "git rm" without having to
think about whether the file is tracked or not.

-Peff

```

## Đoàn Trần Công Danh, 2020-05-27 12:44

Subject: Re: [Feature request] Add -u option to git rm to delete untracked files
Message-ID: <20200527124445.GB2013@danh.dev>
URL: https://gitlist.dev/e/20200527124445.GB2013%40danh.dev
In-Reply-To: <1098602171.79502.1590528083387@mail.ziggo.nl>

```
On 2020-05-26 23:21:23+0200, Erik Janssen <eaw.janssen@chello.nl> wrote:
> Would it be feasible to add a -u option to git rm to specify that
> I also want a file deleted if it is not tracked by git?
> Currently, git rm -f can remove files in whatever state it seems,
> except when it is untracked. 
> By allowing a -u option (-u: also delete untracked files) I would be
> sure that the file is gone while it would also make sure that it
> doesn't break past behaviour where people perhaps rely on git rm to
> leave untracked files alone.

I _think_ remove untracked file is pretty much risky operation,
and it should be done separately/independently (via git-clean(1)).

Let's assume we have -u|--untracked,
nothing (probably) can stop our users from:

	git rm -u src
	git rm -u .

Even git-clean(1) requires either --force or --interactive
because it's too much risky to begin with.

If we think Git as a FileSystem, its rm should only care about its
tracked file. I prefer to just rm(1) instead of "git-rm -u".

-- 
Danh

```

## Randall S. Becker, 2020-05-27 14:29

Subject: RE: [Feature request] Add -u option to git rm to delete untracked files
Message-ID: <021801d63433$3f0c5e80$bd251b80$@nexbridge.com>
URL: https://gitlist.dev/e/021801d63433%243f0c5e80%24bd251b80%24%40nexbridge.com
In-Reply-To: <20200527124445.GB2013@danh.dev>

```
On May 27, 2020 8:45 AM, Ðoàn Tr?n Công Danh wrote:
> To: Erik Janssen <eaw.janssen@chello.nl>
> Cc: git@vger.kernel.org
> Subject: Re: [Feature request] Add -u option to git rm to delete untracked
> files
> 
> On 2020-05-26 23:21:23+0200, Erik Janssen <eaw.janssen@chello.nl> wrote:
> > Would it be feasible to add a -u option to git rm to specify that I
> > also want a file deleted if it is not tracked by git?
> > Currently, git rm -f can remove files in whatever state it seems,
> > except when it is untracked.
> > By allowing a -u option (-u: also delete untracked files) I would be
> > sure that the file is gone while it would also make sure that it
> > doesn't break past behaviour where people perhaps rely on git rm to
> > leave untracked files alone.
> 
> I _think_ remove untracked file is pretty much risky operation, and it should
> be done separately/independently (via git-clean(1)).

A git alias could easily be set up to do this, of course dangerous because of what git-clean does without any arguments:

    git config --global alias.rmu 'clean -f --'

> Let's assume we have -u|--untracked,
> nothing (probably) can stop our users from:
> 
> 	git rm -u src
> 	git rm -u .
> 
> Even git-clean(1) requires either --force or --interactive because it's too
> much risky to begin with.
> 
> If we think Git as a FileSystem, its rm should only care about its tracked file. I
> prefer to just rm(1) instead of "git-rm -u".


```

## Erik Janssen, 2020-05-27 19:31

Subject: RE: [Feature request] Add -u option to git rm to delete untracked files
Message-ID: <1983783029.127560.1590607913242@mail.ziggo.nl>
URL: https://gitlist.dev/e/1983783029.127560.1590607913242%40mail.ziggo.nl
In-Reply-To: <021801d63433$3f0c5e80$bd251b80$@nexbridge.com>

```
Hello All,

Thanks for the responses!
I was not aware of the alias option, but it gave me the following idea that seems to work:
git config --global alias.rmclean '!git rm -r -f $1; git clean -f $1'

A dir with a untracked file 'file1' will give:
git rmclean file1
fatal: pathspec 'file1' did not match any files
Removing file1
but effectively the file is gone.

A dir with a tracked file 'file2' will give:
git rmclean file2
rm 'file2'

alternatively, ignore the errors:
git config --global alias.rmclean '!git rm -r -f $1 2>/dev/null; git clean -f $1 2>/dev/null'

some setup as above, untracked file1, tracked file2 in one go:
git rmclean .

gives:
rm 'file2'
Removing file1

So I think I solved my own question :-)

Kind regards,
Erik.


> Op 27 mei 2020 om 16:29 schreef "Randall S. Becker" <rsbecker@nexbridge.com>:
> 
> 
> On May 27, 2020 8:45 AM, Ðoàn Tr?n Công Danh wrote:
> > To: Erik Janssen <eaw.janssen@chello.nl>
> > Cc: git@vger.kernel.org
> > Subject: Re: [Feature request] Add -u option to git rm to delete untracked
> > files
> > 
> > On 2020-05-26 23:21:23+0200, Erik Janssen <eaw.janssen@chello.nl> wrote:
> > > Would it be feasible to add a -u option to git rm to specify that I
> > > also want a file deleted if it is not tracked by git?
> > > Currently, git rm -f can remove files in whatever state it seems,
> > > except when it is untracked.
> > > By allowing a -u option (-u: also delete untracked files) I would be
> > > sure that the file is gone while it would also make sure that it
> > > doesn't break past behaviour where people perhaps rely on git rm to
> > > leave untracked files alone.
> > 
> > I _think_ remove untracked file is pretty much risky operation, and it should
> > be done separately/independently (via git-clean(1)).
> 
> A git alias could easily be set up to do this, of course dangerous because of what git-clean does without any arguments:
> 
>     git config --global alias.rmu 'clean -f --'
> 
> > Let's assume we have -u|--untracked,
> > nothing (probably) can stop our users from:
> > 
> > 	git rm -u src
> > 	git rm -u .
> > 
> > Even git-clean(1) requires either --force or --interactive because it's too
> > much risky to begin with.
> > 
> > If we think Git as a FileSystem, its rm should only care about its tracked file. I
> > prefer to just rm(1) instead of "git-rm -u".
>

```
