В чем разница между тегом и веткой в Git?

«В чем разница между тегом и веткой в Git?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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 ветки) перемещается при коммитах. Указатель тега зафиксирован.