Пошук уроків, статей та іншого контенту
Створите, переглянете, перемістите й видалите легковагові теги для позначення важливих комітів.
Тег Git — це ім’я, яке посилається на конкретний об’єкт Git, зазвичай на коміт. Теги зручно використовувати для позначення важливих станів репозиторію:
стабільної версії;
стану перед великим рефакторингом;
коміту, який потрібно легко знайти пізніше;
версії, яку передали для тестування.
Легковаговий тег — це просте ім’я-посилання на коміт. Він не містить власного повідомлення, автора чи дати створення, на відміну від анотованого тегу.
Наприклад:
v1.0.0 ──> 4f8a2c1Тег v1.0.0 вказує на коміт 4f8a2c1.
Теги, на відміну від гілок, не переміщуються автоматично під час створення нових комітів.
Щоб створити легковаговий тег для поточного коміту, використайте:
git tag v1.0.0Тепер тег v1.0.0 посилається на коміт, на якому перебуває HEAD.
Перевірити створені теги можна так:
git tagПриклад результату:
v1.0.0Назву тегу можна створити й для конкретного коміту:
git tag v0.9.0 4f8a2c1У цьому прикладі тег v0.9.0 посилається на коміт із коротким ідентифікатором 4f8a2c1, навіть якщо цей коміт не є поточним.
Git приймає повний або достатньо однозначний скорочений ідентифікатор коміту:
git tag v0.8.0 4f8a2c1d7b...Якщо не вказати коміт, Git використає поточний HEAD.
Назва тегу не повинна містити пробілів і має відповідати правилам імен Git. На практиці часто використовують такі формати:
v1.0.0
release-2026-09
before-migrationДля версій зручно дотримуватися єдиного стилю, наприклад v1.0.0, v1.1.0, v2.0.0.
Команда без аргументів показує локальні теги:
git tagЩоб знайти теги за шаблоном, використовуйте параметр --list:
git tag --list "v1.*"Приклад результату:
v1.0.0
v1.1.0
v1.2.0Теги сортуються лексикографічно, тому версії можуть відображатися не в числовому порядку. Для сортування за версіями можна використати:
git tag --list "v*" --sort=-version:refnameКоманда git show показує об’єкт, на який посилається тег:
git show v1.0.0Для легковагового тегу результат міститиме інформацію про відповідний коміт, його зміни та метадані.
Якщо потрібно переглянути лише коротку інформацію про коміт:
git log -1 --oneline v1.0.0Можливий результат:
4f8a2c1 Add validation for emailТак можна перевірити, що тег справді вказує на потрібний коміт.
Отримати ідентифікатор коміту можна за допомогою:
git rev-parse v1.0.0Для короткого ідентифікатора:
git rev-parse --short v1.0.0Команда корисна у скриптах або під час перевірки, чи вказують два теги на один і той самий коміт:
test "$(git rev-parse v1.0.0)" = "$(git rev-parse v1.1.0)" \
&& echo "Теги вказують на один коміт"Після створення тег зазвичай не змінюється. Проте легковаговий тег можна перемістити на інший коміт.
Розглянемо послідовність:
git log --oneline --decorate -3Припустімо, потрібно, щоб v1.0.0 вказував на поточний коміт. Команда без параметра примусового оновлення не спрацює, якщо тег уже існує:
git tag v1.0.0Git повідомить, що тег уже існує. Для переміщення використовуйте параметр -f:
git tag -f v1.0.0Тепер v1.0.0 вказує на поточний HEAD.
Перемістити тег на конкретний коміт можна так:
git tag -f v1.0.0 9c2d7abПеревірка:
git log -1 --oneline v1.0.0Перед зміною тегу корисно зберегти його поточне значення:
git rev-parse --short v1.0.0Після переміщення порівняйте результат:
git rev-parse --short v1.0.0Параметр -f перезаписує локальне посилання без додаткового підтвердження. Тому його не варто використовувати без перевірки, особливо якщо тег уже використовують інші розробники.
Щоб видалити тег із локального репозиторію, використовуйте:
git tag -d v1.0.0Приклад результату:
Deleted tag 'v1.0.0' (was 4f8a2c1)Видалення тегу не видаляє коміт. Воно лише прибирає ім’я, яке на нього посилалося. Коміт може залишатися доступним через гілки, інші теги або історію репозиторію.
Перевірити видалення:
git tag --list "v1.0.0"Якщо команда не вивела результат, локального тегу з такою назвою більше немає.
Локальні та віддалені теги є окремими посиланнями. Видалення локального тегу не видаляє його з віддаленого репозиторію.
Щоб видалити тег у віддаленому репозиторії origin:
git push origin --delete v1.0.0Після цього можна видалити локальний тег:
git tag -d v1.0.0Команди можна виконати в іншому порядку, але важливо розуміти, що кожна з них змінює різне сховище.
Звичайна команда git push не завжди передає теги автоматично. Щоб передати конкретний тег:
git push origin v1.0.0Щоб передати всі локальні теги:
git push origin --tagsПісля створення тегу локально типовий робочий процес може виглядати так:
git tag v1.0.0
git show v1.0.0
git push origin v1.0.0Якщо тег уже передавали до віддаленого репозиторію, а потім перемістили локально, звичайна команда push відхилить оновлення. Щоб примусово перемістити тег у віддаленому репозиторії:
git push --force origin v1.0.0Переміщення опублікованого тегу може порушити роботу інших розробників або автоматизованих процесів. Часто безпечніше не змінювати опублікований тег, а створити новий.
Нижче наведена послідовність команд для створення, перевірки, переміщення та видалення легковагового тегу:
# Показати останні коміти поточної гілки
git log --oneline --decorate -3
# Створити тег для поточного коміту
git tag v1.0.0
# Переглянути список тегів
git tag --list
# Перевірити коміт, на який вказує тег
git log -1 --oneline v1.0.0
# Перемістити тег на поточний коміт
git tag -f v1.0.0
# Перевірити нове розташування тегу
git show --no-patch --format=fuller v1.0.0
# Видалити тег локально
git tag -d v1.0.0Ці команди потрібно виконувати всередині Git-репозиторію. Для команди створення тегу та переміщення важливо знати, на який саме коміт у цей момент вказує HEAD.
Для позначення стабільного коміту можна використати такий алгоритм:
Переконатися, що робоче дерево перебуває в очікуваному стані.
Переглянути коміт, який потрібно позначити.
Створити тег із узгодженою назвою.
Перевірити, на який коміт він вказує.
За потреби передати тег у віддалений репозиторій.
Приклад:
git status
git log -1 --oneline
git tag v1.2.0
git log -1 --oneline v1.2.0
git push origin v1.2.0Якщо тег уже існує, не створюйте новий із тією самою назвою. Спочатку вирішіть, чи потрібно:
залишити тег без змін;
перемістити його за допомогою git tag -f;
видалити його за допомогою git tag -d;
створити новий тег з іншою назвою.
-fКоманда:
git tag v1.0.0не перемістить уже наявний тег. Для цього потрібен параметр:
git tag -f v1.0.0Гілка рухається вперед під час створення нових комітів. Тег залишається на коміті, для якого його створили.
Якщо потрібно позначити новий коміт, створіть новий тег або явно перемістіть наявний:
git tag -f v1.0.0Команда:
git tag -d v1.0.0не видаляє коміт і не скасовує зміни. Вона видаляє лише посилання з назвою v1.0.0.
Після:
git tag -d v1.0.0тег може залишитися у origin. Для видалення віддаленого тегу потрібна окрема команда:
git push origin --delete v1.0.0Якщо інші розробники або CI-системи вже використовують тег, його переміщення змінить значення знайомої назви. Перед примусовим push перевірте, чи справді це очікувана операція:
git push --force origin v1.0.0Легковаговий тег — це ім’я, що посилається на конкретний коміт.
Тег для поточного коміту створюють командою git tag <name>.
Тег можна створити для іншого коміту: git tag <name> <commit>.
Список тегів показує git tag або git tag --list.
Команди git show, git log і git rev-parse допомагають перевірити тег.
Для переміщення наявного тегу використовують git tag -f.
Локальний тег видаляють командою git tag -d.
Віддалений тег видаляють через git push origin --delete <name>.
Переміщення або видалення опублікованих тегів потрібно виконувати обережно.