Re: Restore a single file in the index back to HEAD
- From
Junio C Hamano <junkio@cox.net>
- Date
- Oct 27, 2006, 10:02 UTC
- Message-ID
- <7vac3igjpd.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <4541D670.6000900@op5.se>
Andreas Ericsson <ae@op5.se> writes:
Show 27 quoted lines
> Alex Riesen wrote: >>>> >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. >> >> Still, it is very impressive, it is supported (and will be >> supported, I assume), >> and as such - worth mentioning at least in these examples everyone keeps >> dreaming about. Until that happened, why not mention that the output >> of "git ls-tree" is compatible with --index-info of "update-index"? > > +1. Me likes, although I would amend the command-line that Shawn sent > and describe what it does. Examples > descriptions everywhere else in > the git docs, so it would be concise to do so.
I do not like the one that does the whole tree that much. I would think "git-read-tree -m HEAD" would be simpler and more efficient if you are reverting the whole tree.
On the other hand, I designed --index-info to be compatible with ls-tree output (it is not an accident, it was designed). In
git ls-tree HEAD frotz | git update-index --index-info
"frotz" part does not have to be the exact path but can be a directory name. It means "revert everything in this directory".
This is quite heavy-handed and you would probably want to run update-index --refresh afterwards.