Ответ
В Git тег (tag) и ветка (branch) — это указатели на коммиты, но с разным назначением и поведением.
Тег — это статичная, неизменяемая метка, которая фиксирует конкретную точку в истории, обычно для релизов. Например, v1.2.3.
Ветка — это динамичный указатель, который перемещается вперед по мере создания новых коммитов. Она используется для изоляции разработки новой функциональности.
Примеры:
# Создание и переключение на новую ветку для разработки
$ git checkout -b feature/new-authentication
# Создание аннотированного тега для релиза
$ git tag -a v2.0.0 -m "Release version 2.0.0"
Ключевые отличия:
- Изменяемость: Ветки можно изменять (мержить, перебазировать), теги — нет. Тег всегда указывает на один и тот же коммит.
- Назначение: Ветки — для активной разработки. Теги — для маркировки важных исторических состояний (релизы, точки сборки).
- Перемещение: Указатель ветки (
HEADветки) перемещается при коммитах. Указатель тега зафиксирован.