Re: Restore a single file in the index back to HEAD
- From
Shawn Pearce <spearce@spearce.org>
- Date
- Oct 27, 2006, 08:15 UTC
- Message-ID
- <20061027081545.GF29057@spearce.org>
- In-Reply-To
- <4541BE8E.5050605@op5.se>
Andreas Ericsson <ae@op5.se> wrote:
Show 27 quoted lines
> Shawn Pearce wrote: > >Andy Parkins <andyparkins@gmail.com> wrote: > >>However, it led me to wonder what the inverse of git-update-index is. > > > >git-update-index :-) > > > >You can use something like: > > > > git ls-tree HEAD oops/file1 | git update-index --index-info > > > >to restore the index state of oops/file1. > > > > > >Which leads us to the always interesting, fun and exciting: > > > > git ls-tree -r HEAD | git update-index --index-info > > > >which will undo everything except 'git add' from the index, as > >ls-tree -r is listing everything in the last commit. > > > > ... and also shows The Power of the Pipe, which Daniel@google was > missing in recent versions of git. ;-) > > Btw, this is most definitely not a documented thing and requires a bit > of core git knowledge, so perhaps the "shell-scripts were good for > hackers to learn what to pipe where" really *is* a very important point.
Agreed.
I learned that trick while studying the update-index source code and tried to wrap my tiny little head around the various formats --index-info accepts and how that code automatically guesses the correct format. :-)
Though I have to admit I wipped up a little test repository just to make sure what I was writing in the email worked properly; I can't say I've done it myself too many times in the past...