Skip to content

lab 12 Tagging versions

Goals

Let’s call the current version of the hello program version 1 (v1).

Tagging version 1

Execute:

git tag v1

Now you can refer to the current version of the program as v1.

Tagging Previous Versions

Let’s tag the version immediately prior to the current version v1-beta. First we need to checkout the previous version. Rather than look up the hash, we will use the ^ notation to indicate “the parent of v1”.

If the v1^ notation gives you any trouble, you can also try v1~1, which will reference the same version. This notation means “the first ancestor of v1”.

Execute:

git checkout v1^
cat hello.py

Output:

$ git checkout v1^
Note: switching to 'v1^'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 0bf384c Display user input
$ cat hello.py
import sys

print(f"Hello, World! With user input : {sys.argv[0]}")

See, this is the version with the default value before we added the comment. Let’s make this v1-beta.

Execute:

git tag v1-beta

Checking Out by Tag Name

Now try going back and forth between the two tagged versions.

Execute:

git checkout v1
git checkout v1-beta

Output:

$ git checkout v1
Previous HEAD position was 0bf384c Display user input
HEAD is now at 1c410c6 Add a comment
$ git checkout v1-beta
Previous HEAD position was 1c410c6 Add a comment
HEAD is now at 0bf384c Display user input

Viewing Tags using the tag command

You can see what tags are available using the git tag command.

Execute:

git tag

Output:

$ git tag
v1
v1-beta

Viewing Tags in the Logs

You can also check for tags in the log.

Execute:

git hist main --all

Output:

$ git hist main --all
* 1c410c6 2023-08-21 | Add a comment (tag: v1, main) [Théophile Chevalier]
* 0bf384c 2023-08-21 | Display user input (HEAD, tag: v1-beta) [Théophile Chevalier]
* 31c3945 2023-08-21 | Add some content [Théophile Chevalier]
* aa5d425 2023-08-21 | First Commit [Théophile Chevalier]

You can see both tags (v1 and v1-beta) listed in the log output, along with the branch name (main). Also HEAD shows you the currently checked out commit (which is v1-beta at the moment).