11. Створення тегів версій

Цілі

  • Дізнатися, як створювати теги для комітів, що будуть використані в майбутньому.

Думаю ви погодитесь, що працювати з хешами комітів напряму просто незручно. Хіба не було б чудово, якби ви могли позначати конкретні коміти зрозумілими для людини назвами? Таким чином, ви могли б чітко бачити важливі віхи в історії проєкту. Крім того, ви могли б легко переходити до певної версії проєкту за її назвою. Саме для цього в Git придумали теги.

Назвімо поточну версію сторінки hello.html першою, тобто v1.

01 Створіть тег першої версії

Виконайте

git tag v1
git log

Результат

$ git tag v1
$ git log
b7614c1 2023-11-28 | Added HTML header (HEAD -> main, tag: v1) [Alexander Shvets]
46afaff 2023-11-28 | Added standard HTML page tags [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]

Тепер поточна версія сторінки називається v1.

02 Теги для попередніх версій

Позначимо версію, що передує поточній, назвою v1-beta. Перш за все, ми перемкнемося на попередню версію. Замість того, щоб шукати хеш коміта, ми будемо використовувати позначення ^, а саме v1^, що вказує на коміт, попередній до v1.

Якщо позначення v1^ викликає у вас складнощі, ви також можете скористатися позначенням v1~1, яке вказуватиме на ту саму версію. Запис V~N означає «N-а версія перед V», або у випадку v1~1 — перша версія перед v1.

Виконайте

git checkout v1^
cat hello.html

Результат

$ 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 46afaff Added standard HTML page tags
$ cat hello.html
<html>
  <body>
    <h1>Hello, World!</h1>
  </body>
</html>

Це версія з тегами <html> та <body>, але поки що без <head>. Зробімо її версією v1-beta.

Виконайте

git tag v1-beta
git log

Результат

$ git tag v1-beta
$ git log
46afaff 2023-11-28 | Added standard HTML page tags (HEAD, tag: v1-beta) [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]

03 Перемикання за ім'ям тегу

Тепер спробуйте поперемикатися між двома зазначеними версіями.

Виконайте

git checkout v1
git checkout v1-beta

Результат

$ git checkout v1
Previous HEAD position was 46afaff Added standard HTML page tags
HEAD is now at b7614c1 Added HTML header
$ git checkout v1-beta
Previous HEAD position was b7614c1 Added HTML header
HEAD is now at 46afaff Added standard HTML page tags

04 Перегляд тегів за допомогою команди tag

Ви можете побачити, які теги доступні, використовуючи команду git tag.

Виконайте

git tag

Результат

$ git tag
v1
v1-beta

05 Перегляд тегів у логах

Ви також можете подивитися теги у лозі.

Виконайте

git log main --all

Результат

$ git log main --all
b7614c1 2023-11-28 | Added HTML header (tag: v1, main) [Alexander Shvets]
46afaff 2023-11-28 | Added standard HTML page tags (HEAD, tag: v1-beta) [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]

Ви можете бачити теги(v1 і v1-beta) у лозі разом з ім'ям гілки(main). Крім того, позначка HEAD показує коміт, на який ви перемкнулися (зараз це v1-beta).