threads / discuss / 5061

File version at a specific date?

Subject: File version at a specific date?

## tl;dr

3 messages between Jul 31, 2006 and Jul 31, 2006.

replies: 2people: 3as markdown or json

Alexander ZVYAGIN· Jul 31, 2006, 17:56 UTC · lore
Hi,

I failed to find in the documentation how to look to a file content at some moment in a past.

Something like this: $ git checkout master~2 Makefile when I specify not the revisions numbers ago the file was (~2), but the time, for example "2005-12-12 00:00:00" or something like this.

Where should I look at?

Thanks in advance! Alexander.

Jakub Narebski· Jul 31, 2006, 18:24 UTC · re: Alexander ZVYAGIN · lore

Re: File version at a specific date?

Alexander ZVYAGIN wrote:
Show 9 quoted lines
> I failed to find in the documentation how to look to a file content
> at some moment in a past.
> 
> Something like this:
> $ git checkout master~2 Makefile
> when I specify not the revisions numbers ago the file was (~2),
> but the time, for example "2005-12-12 00:00:00" or something like this.
> 
> Where should I look at?

Either use git rev-list with --since=datestring, --after=datestring, --until=datestring, --before=datestring to find a commit, or if you have reflog enabled (you have .git/logs/refs/) you can use @{date} syntax, see 'man git-rev-parse'

"A suffix @ followed by a date specification enclosed in a brace pair  (e.g.
 {yesterday},  {1  month  2 weeks 3 days 1 hour 1 second ago} or {1979-02-26
 18:30:00}) to specify the value of the ref at a prior point in  time.  This
 suffix  may  only be used immediately following a ref name and the ref must
 have an existing log ($GIT_DIR/logs/<ref>)."
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Shawn Pearce· Jul 31, 2006, 22:20 UTC · re: Jakub Narebski · lore

Re: File version at a specific date?

Jakub Narebski <jnareb@gmail.com> wrote:
Show 22 quoted lines
> Alexander ZVYAGIN wrote:
> 
> > I failed to find in the documentation how to look to a file content
> > at some moment in a past.
> > 
> > Something like this:
> > $ git checkout master~2 Makefile
> > when I specify not the revisions numbers ago the file was (~2),
> > but the time, for example "2005-12-12 00:00:00" or something like this.
> > 
> > Where should I look at?
> 
> Either use git rev-list with --since=datestring, --after=datestring,
> --until=datestring, --before=datestring to find a commit, or if you have
> reflog enabled (you have .git/logs/refs/) you can use @{date} syntax,
> see 'man git-rev-parse'
> 
> "A suffix @ followed by a date specification enclosed in a brace pair  (e.g.
>  {yesterday},  {1  month  2 weeks 3 days 1 hour 1 second ago} or {1979-02-26
>  18:30:00}) to specify the value of the ref at a prior point in  time.  This
>  suffix  may  only be used immediately following a ref name and the ref must
>  have an existing log ($GIT_DIR/logs/<ref>)."

I'd like to add something to the discussion, at least for the benefit of the archives:

There's a semantic difference between the two date specification/query styles suggested above:

	git rev-list with --since, --after, --until, --before will
	look at the date of the commit;
	@{date} after a ref name will look at the commit that was
	stored under that ref name at that point in time.

These are two entirely different timelines. For example someone could make a commit on Tuesday which you pull into your repository on Thursday. The commit will say (and thus git rev-list with --since will say) that the file version existed on Tuesday, but the reflog would say that the file version existed only as of Thursday, as that was when it became available to your repository.

-- 
Shawn.

← back to recent threads