threads / discuss / 2145

Problem getting older version

Subject: Problem getting older version

## tl;dr

4 messages between Oct 19, 2005 and Oct 24, 2005.

replies: 3people: 3as markdown or json

Nico -telmich- Schottelius· Oct 19, 2005, 08:00 UTC · lore
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· Oct 19, 2005, 08:26 UTC · re: Nico -telmich- Schottelius · lore

Re: Problem getting older version

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· Oct 20, 2005, 01:42 UTC · re: Nico -telmich- Schottelius · lore

Re: Problem getting older version

  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· Oct 24, 2005, 05:23 UTC · re: Petr Baudis · lore

Re: Problem getting older version

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]:
Show 29 quoted lines
>   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.

← back to recent threads