Re: Restore a single file in the index back to HEAD

3 messages, 3 authors, 2016-08-11 · open the first message on its own page

Re: Restore a single file in the index back to HEAD

From: Junio C Hamano <hidden>
Date: 2016-08-11 19:29:58

Andreas Ericsson [off-list ref] writes:
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
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.

Re: Restore a single file in the index back to HEAD

From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-08-11 19:23:47

On 10/27/06, Junio C Hamano [off-list ref] wrote:
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.
I would prefer "git update-index --reset frotz" or "git checkout
--index HEAD frotz". git ls-tree|git update-index is too cryptic for
me and too long for my fingers.
-- 

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help