git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Get a copy of an old version of a file, using git gui/gitk

From
Björn Steinbrink <b.steinbrink@gmx.de>
Date
Sep 19, 2008, 09:12 UTC
Message-ID
<20080919091223.GA13778@atjola.homenet>
In-Reply-To
<884843.41605.qm@web95002.mail.in2.yahoo.com>
[Fixed that top-posting for you...]
On 2008.09.19 14:02:30 +0530, dhruva wrote:
Show 31 quoted lines
> From: Björn Steinbrink <B.Steinbrink@gmx.de>
> > On 2008.09.19 08:58:04 +0100, Peter Krefting wrote:
> > > From the command line, I would try to find the SHA-1 and use git
> > > cat-file, but I can't figure out how to do it from the GUIs. Or, to
> > > fall back to the command-line, how to get the SHA-1 for the object out
> > > of git gui/gitk.
> > 
> > You don't need the sha1 of the blob object, just the revision and the
> > filename, and then you can reference the blob using the
> > :syntax.
> > 
> > For example:
> >     git cat-file blob HEAD^^^:some/file.c
> > or less plumb-ish:
> >     git show HEAD^^^:some/file.c
> > 
> > I've been told that neither cares about the CRLF conversion, and I don't
> > know if there's anything except "git checkout" that actually does care
> > about it. With checkout, you would do:
> > 
> > git checkout HEAD^^^ -- some/file.c
> > 
> > But that replaces the current version of that file in your working tree
> > and index with the version from the HEAD^^^ revision, so that might not
> > be exactly what you were looking for.
>
> Using gitk, you can branch at the change that has the file (and
> content, I am not using version as git does not version files) you
> want. Check out that branch and you will have that file (and all other
> files at that changeset). When you are done, you can just delete that
> branch... branching is _cheap_

Yeah, that works, but only if you have no uncommitted changes (which git would try to apply to the version you check out). And that obviously replaces _all_ files in your working tree and index, so that doesn't have any advantages compared to the "git checkout $commit -- file" approach. The disadvantage is just shifted from "uncommitted changes to that file are lost" to "uncommitted changes to that file are kept", so you don't even get the actual version of that file that you wanted to have in the first place.

Besides that, why even bother with branch creation at all? Just checkout that revision (puts you on a detached HEAD), do whatever you want, and checkout the branch you were working on again. No need to create a branch if you don't intend to create commits you want to keep...

Björn
Previous: dhruva
Message 2 of 2 in “Re: Get a copy of an old version of a file, using git gui/gitk”
  1. dhruvaSep 19, 2008
  2. Björn SteinbrinkSep 19, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.