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

Re: How to check out the repository at a particular point in time

From
Thomas Rast <trast@student.ethz.ch>
Date
Aug 23, 2011, 09:17 UTC
Message-ID
<201108231117.00314.trast@student.ethz.ch>
In-Reply-To
<1314085268.42103.YahooMailClassic@web25406.mail.ukl.yahoo.com>
R. Diez wrote:
> 
> check out HEAD, it should always work

Please stop using HEAD like this, you'll just confuse your coworkers (and yourself). HEAD denotes the currently checked out commit. [Unlike SVN it is *not* the most recent version of anything.] Thus by definition, 'git checkout HEAD' is a no-op.

The newest commit on a branch is denoted by its branch name, because as Jens said, a branch is in fact a pointer to its tip[1] commit.

> Now you're saying I cannot reliably checkout last week's versions
> because yesterday I did a merge from an older branch? You mean that
> git stores everything with clean graphs and numeric pointers, so it
> cannot know what this repository looked like last week?

Indeed. Especially if forced pushes are allowed, there is no way to know what was in the repo at a given time unless you have (local) reflogs enabled on remote branches and going back until the time you want.

Show 10 quoted lines
> As the developer, I have full control, I can decide what the
> branches are called and how the public repository is
> updated/pushed/whatever. I can control the clock so there are no
> time skews.
> 
> What do I have to do in order to be able to reliably checkout last
> week's versions without too much administrative work? I just want to
> get the same result today as if I had done a checkout last week from
> the public repository and had made a back-up copy of the working
> directory then.
Assuming
* you never do a non-fast-forward (i.e., forced) push
* you never have any clock skew
* you always merge features into master (not the other way around)
* you always push immediately after committing on master

you can get there by using 'git log -1 --first-parent --until=...' as mentioned in my first email.

I personally think that's crazy and -- if you want to avoid the work of "really" using submodules -- support Jens's suggestion of having the buildbot automatically assemble an "I tested this" superproject.

[1] or "head" in lowercase (thus "branch head"), but I prefer tip to avoid confusion

-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Previous: R. DiezNext: PJ Weisberg
Message 2 of 4 in “Re: How to check out the repository at a particular point in time”
  1. R. DiezAug 23, 2011
  2. Thomas RastAug 23, 2011
  3. PJ WeisbergAug 23, 2011
  4. Jens LehmannAug 23, 2011

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.