Редактировать : у Якуба Наренбского больше гитфу. Следующая намного более простая команда работает отлично:
git describe --tags
(Или без, --tags
если вы отметили аннотированный тег. Мой тег облегчен, поэтому мне нужны --tags.)
оригинальный ответ следует:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
У кого-то с большим количеством мерзавца может быть более изящное решение ...
Это использует тот факт, что git-log
отчеты о журнале, начиная с того, что вы извлекли. %h
печатает сокращенный хеш Затем git describe --exact-match --tags
находит тег (легкий или аннотированный), который точно соответствует этому коммиту.
$()
Синтаксис выше , предполагает , что вы используете Баш или аналогичный.
git describe
покажет имя тега, если вы находитесь на (аннотированном) теге, или,<tag>-<n>-g<shortened sha-1>
если нет, то где<n>
число подтверждений с тех пор<tag>
.--exact-match
к своему ответу секунды до вашего комментария. Приятно знать, что вы можете удалить его и получить полезную информацию из нечеткого ввода.git rev-parse HEAD
- лучшее решение, чемgit log -n1 --pretty='%h'
... но почему вы не можете просто написатьHEAD
(или ничего, поgit describe
умолчанию HEAD)?Это сработало для меня
git describe --tags --abbrev=0
источник
Показать все теги на текущем заголовке (или коммите)
источник
git describe
это фарфоровая команда, которую вы должны избегать:http://git-blame.blogspot.com/2013/06/checking-current-branch-programatically.html
Вместо этого я использовал:
источник
^0
для коммитов, которые соответствуют тэгам (например, для тэгов, которые1.0
он выводит1.0^0
). Есть ли способ получить только вывод Git1.0
, или я должен использовать sed для этого?Когда вы проверяете тег, у вас есть то, что называется «оторванная голова» . Обычно коммит Git HEAD - это указатель на ветку, которую вы в данный момент извлекли. Однако, если вы извлекаете что-то, кроме локальной ветки (например, тег или удаленную ветку), у вас есть «оторванная голова» - вы не находитесь ни в одной ветке. Вы не должны совершать какие-либо коммиты, находясь на отстраненной голове.
Можно проверить тег, если вы не хотите вносить какие-либо изменения. Если вы просто просматриваете содержимое файлов или хотите построить свой проект из тега, то все в порядке
git checkout my_tag
и работайте с файлами, если вы не делаете никаких коммитов . Если вы хотите начать изменять файлы, вы должны создать ветку на основе тега:создаст новую ветку с именем,
my_tag_branch
начиная сmy_tag
. В этой ветке безопасно вносить изменения.источник
git log --decorate
Это скажет вам, какие ссылки указывают на текущий извлеченный коммит.
источник