# Undo git-rm without commit?

6 messages from 2008-03-26 to 2008-03-26. Participants: Joe Fiorini, Mike Hommey, Jeff King, Matthieu Moy.
Thread: https://gitlist.dev/t/12871

## Joe Fiorini, 2008-03-26 06:17

Subject: Undo git-rm without commit?
Message-ID: <D6386C1A-92D3-4E11-8DE6-CC7553211A33@faithfulgeek.org>
URL: https://gitlist.dev/e/D6386C1A-92D3-4E11-8DE6-CC7553211A33%40faithfulgeek.org

```
I hadn't done a git-commit yet, but I used git-rm thinking it would  
remove files that I had just added.  Instead, it deleted everything I  
had added from the disk.  Is there a way to undo this?  I'm doubtful,  
but would love to not have to rewrite what I was working on.

Thanks!
Joe

```

## Mike Hommey, 2008-03-26 06:24

Subject: Re: Undo git-rm without commit?
Message-ID: <20080326062422.GA18856@glandium.org>
URL: https://gitlist.dev/e/20080326062422.GA18856%40glandium.org
In-Reply-To: <D6386C1A-92D3-4E11-8DE6-CC7553211A33@faithfulgeek.org>

```
On Wed, Mar 26, 2008 at 02:17:18AM -0400, Joe Fiorini wrote:
> I hadn't done a git-commit yet, but I used git-rm thinking it would  
> remove files that I had just added.  Instead, it deleted everything I  
> had added from the disk.  Is there a way to undo this?  I'm doubtful,  
> but would love to not have to rewrite what I was working on.

Your best take would be to take a look at the unreachable loose objects
in your repository. One way to have a list of them would be to do a
git prune -n. Then you can look at the contents of each blob in those
with either git cat-file -p $sha1, or git show $sha1.

Mike

PS: What you wanted to use is git reset, not git rm.

```

## Jeff King, 2008-03-26 06:26

Subject: Re: Undo git-rm without commit?
Message-ID: <20080326062635.GC26286@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20080326062635.GC26286%40coredump.intra.peff.net
In-Reply-To: <D6386C1A-92D3-4E11-8DE6-CC7553211A33@faithfulgeek.org>

```
On Wed, Mar 26, 2008 at 02:17:18AM -0400, Joe Fiorini wrote:

> I hadn't done a git-commit yet, but I used git-rm thinking it would  
> remove files that I had just added.  Instead, it deleted everything I had 
> added from the disk.  Is there a way to undo this?  I'm doubtful, but 
> would love to not have to rewrite what I was working on.

If by "added" you mean "git add"ed, then yes. The file is hashed and the
blob is put in the object database during the add. Unfortunately,
nothing actually _refers_ to it, so you will have to pick it out
manually by its hash. Try:

  git fsck --lost-found

and then poke around .git/lost-found/other for your missing content.

As an aside, didn't git-rm warn you? While confirming that the command I
was giving you was correct, I did this:

  git init
  echo content >file
  git add file
  git rm file

and got:

  error: 'file' has changes staged in the index
  (use --cached to keep the file, or -f to force removal)

-Peff

```

## Joe Fiorini, 2008-03-26 06:38

Subject: Re: Undo git-rm without commit?
Message-ID: <0535D2B4-0C4A-40D0-879A-7E0C5B3B48E4@faithfulgeek.org>
URL: https://gitlist.dev/e/0535D2B4-0C4A-40D0-879A-7E0C5B3B48E4%40faithfulgeek.org
In-Reply-To: <20080326062635.GC26286@coredump.intra.peff.net>

```
Yeah, it warned me, I wasn't being careful enough.  I guess I didn't  
think it would remove from the working tree, just the repository.  My  
err for not reading the docs until _after_ the mistake.  Live &  
learn.  Thanks for the help, opening lost-found/other in TextMate  
solved my problem quickly!

Thanks again!
Joe

On Mar 26, 2008, at 2:26 AM, Jeff King wrote:

> On Wed, Mar 26, 2008 at 02:17:18AM -0400, Joe Fiorini wrote:
>
>> I hadn't done a git-commit yet, but I used git-rm thinking it would
>> remove files that I had just added.  Instead, it deleted everything  
>> I had
>> added from the disk.  Is there a way to undo this?  I'm doubtful, but
>> would love to not have to rewrite what I was working on.
>
> If by "added" you mean "git add"ed, then yes. The file is hashed and  
> the
> blob is put in the object database during the add. Unfortunately,
> nothing actually _refers_ to it, so you will have to pick it out
> manually by its hash. Try:
>
>  git fsck --lost-found
>
> and then poke around .git/lost-found/other for your missing content.
>
> As an aside, didn't git-rm warn you? While confirming that the  
> command I
> was giving you was correct, I did this:
>
>  git init
>  echo content >file
>  git add file
>  git rm file
>
> and got:
>
>  error: 'file' has changes staged in the index
>  (use --cached to keep the file, or -f to force removal)
>
> -Peff

```

## Jeff King, 2008-03-26 06:39

Subject: Re: Undo git-rm without commit?
Message-ID: <20080326063951.GA26859@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20080326063951.GA26859%40coredump.intra.peff.net
In-Reply-To: <0535D2B4-0C4A-40D0-879A-7E0C5B3B48E4@faithfulgeek.org>

```
On Wed, Mar 26, 2008 at 02:38:42AM -0400, Joe Fiorini wrote:

> Yeah, it warned me, I wasn't being careful enough.  I guess I didn't  
> think it would remove from the working tree, just the repository.  My err 
> for not reading the docs until _after_ the mistake.  Live & learn.  Thanks 
> for the help, opening lost-found/other in TextMate solved my problem 
> quickly!

OK, good. Just making sure there wasn't a bug in rm. ;)

-Peff

```

## Matthieu Moy, 2008-03-26 09:48

Subject: Re: Undo git-rm without commit?
Message-ID: <vpqve3995po.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpqve3995po.fsf%40bauges.imag.fr
In-Reply-To: <0535D2B4-0C4A-40D0-879A-7E0C5B3B48E4@faithfulgeek.org>

```
Joe Fiorini <joe@faithfulgeek.org> writes:

> Yeah, it warned me, I wasn't being careful enough.  I guess I didn't
> think it would remove from the working tree, just the repository.  My
> err for not reading the docs until _after_ the mistake.

Reading the error message would have done it also :-\.

>>  error: 'file' has changes staged in the index
>>  (use --cached to keep the file, or -f to force removal)
         ^^^^^^^^^^^^^^^^^^^^^^^^^

Good luck with lost+found, still !

-- 
Matthieu

```
