Re: Restore a single file in the index back to HEAD
From: Luben Tuikov <hidden>
Date: 2016-08-11 20:15:14
--- Junio C Hamano <junkio@cox.net> wrote:Andreas Ericsson [off-list ref] writes:quoted
Alex Riesen wrote:quoted
quoted
quoted
quoted
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
Yep, that's what I use... "git-undo-update-index" is
#!/bin/sh
git-read-tree -m -i HEAD
Luben
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. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html