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