# Problem getting older version

4 messages from 2005-10-19 to 2005-10-24. Participants: Nico -telmich- Schottelius, Junio C Hamano, Petr Baudis.
Thread: https://gitlist.dev/t/2145

## Nico -telmich- Schottelius, 2005-10-19 08:00

Subject: Problem getting older version
Message-ID: <20051019080046.GI22986@schottelius.org>
URL: https://gitlist.dev/e/20051019080046.GI22986%40schottelius.org

```
Hello!

The following situation:

- The last commit was a merge, mhich broke some files
- We want three files from the commit before

Now I was told to do the following:

1. get the sha1hash from the commit before (cg-log did that)
2. get the sha1hash from the file in that tree:
[9:27] srsyg01:walderlift% git-ls-tree 35ff687efc1b19b4db918e5af859894a9dc916e4 Code/lw1/Client/MainForm.xfm 
100644 blob 605958b1435f6bdbd5cc502ae3a4c1a281d01f0a    Code/lw1/Client/MainForm.xfm

3. cat the file with git-cat-file
[9:36] srsyg01:walderlift% git-cat-file blob 605958b1435f6bdbd5cc502ae3a4c1a281d01f0a | less

4. Now overwrite it
[9:38] srsyg01:walderlift% git-cat-file blob 605958b1435f6bdbd5cc502ae3a4c1a281d01f0a > Code/lw1/Client/MainForm.xfm 

5. Goto 2 and repeat two times

Is this really the standard way to recover a file? As a developer / end user I would expect that:

cg-recover <filename> <commit id> and -f for overwriting the file if it exists

Did I overlook something or is it currently really this complicated? And it is
very error prone, if I have to overwrite the files using '>'-redirection (perhaps I mistype the
filename).

Nico

-- 
Latest project: cconfig (http://nico.schotteli.us/papers/linux/cconfig/)
Open Source nutures open minds and free, creative developers.

```

## Junio C Hamano, 2005-10-19 08:26

Subject: Re: Problem getting older version
Message-ID: <7vach5ewu4.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vach5ewu4.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20051019080046.GI22986@schottelius.org>

```
Nico -telmich- Schottelius <nico-linux-git@schottelius.org> writes:

> The following situation:
>
> - The last commit was a merge, mhich broke some files
> - We want three files from the commit before

With only git-core tool, with the tip of the master branch,
would be:

    $ git pull somewhere ;# this caused the mismerge
    $ git checkout HEAD^ foo.c bar.c baz.c

This assumes that HEAD is a merge and HEAD^ (= HEAD^1) is the tip
of your branch before that merge (HEAD^2 would be what you
pulled from "somewhere").

The latest "git checkout", when given extra paths parameters,
does not switch branches.  Instead it pulls out named files from
the given version into your index, and checks them out. 

> Now I was told to do the following:

These 5 steps look correct; after that, you probably would want
to run git-update-index on those three paths.

```

## Petr Baudis, 2005-10-20 01:42

Subject: Re: Problem getting older version
Message-ID: <20051020014230.GV30889@pasky.or.cz>
URL: https://gitlist.dev/e/20051020014230.GV30889%40pasky.or.cz
In-Reply-To: <20051019080046.GI22986@schottelius.org>

```
  Hello,

Dear diary, on Wed, Oct 19, 2005 at 10:00:46AM CEST, I got a letter
where Nico -telmich- Schottelius <nico-linux-git@schottelius.org> told me that...
> The following situation:
> 
> - The last commit was a merge, mhich broke some files
> - We want three files from the commit before
..snip..
> Is this really the standard way to recover a file? As a developer / end user I would expect that:
> 
> cg-recover <filename> <commit id> and -f for overwriting the file if it exists

  thanks for the suggestion. I've revamped cg-restore to support this
kind of syntax, so now if you do

	cg-restore -r ID [-f] FILENAME

it should do what you want.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
VI has two modes: the one in which it beeps and the one in which
it doesn't.

```

## Nico -telmich- Schottelius, 2005-10-24 05:23

Subject: Re: Problem getting older version
Message-ID: <20051024052335.GB1830@schottelius.org>
URL: https://gitlist.dev/e/20051024052335.GB1830%40schottelius.org
In-Reply-To: <20051020014230.GV30889@pasky.or.cz>

```
Thanks Petr!

Didn't have the time (and network connection, writing offline currently) to
test latest cogito/git for the other errors, but will do that on monday.

Nico

Petr Baudis [Thu, Oct 20, 2005 at 03:42:30AM +0200]:
>   Hello,
> 
> Dear diary, on Wed, Oct 19, 2005 at 10:00:46AM CEST, I got a letter
> where Nico -telmich- Schottelius <nico-linux-git@schottelius.org> told me that...
> > The following situation:
> > 
> > - The last commit was a merge, mhich broke some files
> > - We want three files from the commit before
> ..snip..
> > Is this really the standard way to recover a file? As a developer / end user I would expect that:
> > 
> > cg-recover <filename> <commit id> and -f for overwriting the file if it exists
> 
>   thanks for the suggestion. I've revamped cg-restore to support this
> kind of syntax, so now if you do
> 
> 	cg-restore -r ID [-f] FILENAME
> 
> it should do what you want.
> 
> -- 
> 				Petr "Pasky" Baudis
> Stuff: http://pasky.or.cz/
> VI has two modes: the one in which it beeps and the one in which
> it doesn't.
> -
> 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

-- 
Latest project: cconfig (http://nico.schotteli.us/papers/linux/cconfig/)
Open Source nutures open minds and free, creative developers.

```
