Відповіді:
Редагувати : У Якуба Нарбського є більше git-fu. Наступна значно простіша команда прекрасно працює:
git describe --tags
(Або без, --tags
якщо ви перевірили помічений тег. Мій тег легкий, тому мені потрібні теги.)
оригінальна відповідь випливає:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
У когось більше git-fu може бути більш елегантне рішення ...
Це використовує той факт, що 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
Показувати всі теги на поточній HEAD (або виконувати)
git tag --points-at HEAD
git describe
- порцелянова команда, якої слід уникати:
http://git-blame.blogspot.com/2013/06/checking-current-branch-programatic.html
Натомість я використав:
git name-rev --tags --name-only $(git rev-parse HEAD)
^0
для комісій, які відповідають тегам (наприклад, для тегів, які 1.0
він виводить 1.0^0
). Чи є спосіб отримати тільки вихід Git 1.0
, або я повинен використовувати sed для цього?
Коли ви перевіряєте тег, у вас з'являється те, що називається a "відокремлена голова" . Зазвичай 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>
.