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
).