В каких обстоятельствах я должен добавить флаг -a в команду тега git?

Я знаю о технических различиях между двумя типами команд (использование без -a создает легкий тег, который по существу является ветвью, которая никогда не перемещается, использование с -a создает полный объект в базе данных объектов Git, которая включает имя коммиттера, адрес электронной почты и т.д.).

Возникает вопрос: какой я должен использовать в своих проектах (например, указать версии релизов на Github)? И если кто-то очень предпочитает другого, почему существует другой вариант? Каковы варианты использования для каждой версии?

Ответ 1

Я бы сказал, что с опубликованной работой вы всегда должны использовать аннотированные теги. Эта дополнительная информация никогда не навредит вам.

Легкие теги поражают меня, как больше, когда вы ленитесь. Возможно, временный тег (просто убедитесь, что вы его случайно не нажмете, на самом деле вы можете просто использовать ветку), или, может быть, личное репо, где не так много пользы для дополнительной информации. Я предполагаю, что многие небольшие проекты тоже делают это; они просто не заинтересованы в информации. Вероятно, существует только один интегратор, никто не связан с проверкой подписанных тегов, и они просто простые маркеры версий релизов. (Я все еще думаю, что вы должны предпочесть аннотированные теги, на всякий случай!)

Другой способ думать об этом: легкие теги вроде как писать действительно плохое сообщение о совершении. Вы действительно не должны этого делать, но иногда люди делают это, как правило, когда никто не смотрит.

Ответ 2

Каковы варианты использования для каждой версии?

man git -tag говорит:

Аннотированные теги предназначены для выпуска, в то время как легкие теги предназначены для частных или временных меток объектов.

И некоторые виды поведения различают между собой таким образом, что эта рекомендация полезна, например:

  • аннотированные теги могут содержать сообщение, создателя и дату, отличную от фиксации, на которую указывают. Поэтому вы можете использовать их для описания выпуска без фиксации релиза. Легкие теги не имеют дополнительной информации.
  • git push -follow-tags будут только push-аннотированные теги
  • git describe без параметров командной строки видят только аннотированные теги

См. также:

Ответ 3

Если вы хотите нажать/извлечь их, тогда вы должны использовать аннотированные теги.

Ответ 4

Наиболее распространенным стилем является использование аннотированных тегов для постоянных тегов, вещей, которые вы ожидаете, и вы ожидаете увидеть других людей. Легкие теги затем используются для временных тегов, которые вы не будете нажимать и которые вы не хотите, чтобы другие люди видели.

Ответ 5

У меня было мнение об этом несколько лет назад, что, я думаю, все еще может быть актуальным.