Ответ 1
git describe --tags
должен предоставить вам информацию.
bash/shell script:
#!/bin/bash
...
latesttag=$(git describe --tags)
echo checking out ${latesttag}
git checkout ${latesttag}
Я пишу оболочку script, и я ищу, чтобы проверить последнюю версию репо. В частности, я хочу разбить этот процесс на несколько этапов.
Checking out version: XX
Я видел похожие вопросы, но я не вижу, как сохранить имя тега в переменной (возможно, потому что я noob с оболочкой скрипты).
git describe --tags
должен предоставить вам информацию.
bash/shell script:
#!/bin/bash
...
latesttag=$(git describe --tags)
echo checking out ${latesttag}
git checkout ${latesttag}
# Get new tags from remote
git fetch --tags
# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
# Checkout latest tag
git checkout $latestTag
Чтобы помещать информацию в переменную, вы ее назначаете:
myvar=myvalue
Однако вы хотите вычислить значение для назначения, вы не просто назначаете константу переменной. В вашем случае вы хотите назначить вывод команды переменной.
Сначала вам нужно выяснить, как получить последнее имя тега. Я оставлю это до вас, так как вы ничего не сказали о том, как создаются имена тегов.
Затем, когда у вас есть команда, которая дает последнее имя тега, вам нужно назначить имя переменной. Bash делает это с помощью "подстановки команд".
Например: thetagname=$( command_to_get_tag_name )
Итак, если вам нужно просто взять последний тег, который git сообщает следующее:
git tag | tail -1
то вы можете назначить его переменной следующим образом:
thetagname=$( git tag | tail -1)
и вы можете использовать/видеть значение, подобное этому:
echo $thetagname
или как пользователь1281385 говорит, например:
echo ${thetagname}
Два метода одинаковы, за исключением того, что второй способ позволяет объединить литерал с переменным значением:
echo ${thetagname}ing
который добавит "ing" к содержимому $thetagname. Скобки необходимы, чтобы предотвратить Bash от мысли, что "thetagnameing" является переменной.
На странице Bash man есть раздел под названием EXPANSION, в котором объясняется 7 видов расширения. Подстановка команд - одна из них. Макетная страница Bash довольно большая и действительно повторяет все интересные ключевые слова несколько раз, поэтому на самом деле раздражает поиск в ней вещей. Вот несколько советов о том, как найти раздел EXPANSION (и немного узнать о пейджере "меньше" ):
Запустите ручную считыватель, прочитав справочную страницу Bash следующим образом:
man bash
Найдите термин "РАСШИРЕНИЕ" в начале строки, как только вы попадете в считывающее устройство, набрав /^EXPANSION
на дисплее. Когда вы наберете /
, вы увидите/в нижней части экрана, но страница руководства все равно будет там. Это команда поиска шаблона. Затем введите ^EXPANSION
, и вы увидите это в нижней части экрана. ^ означает "поиск вещей в начале строки", а "РАСШИРЕНИЕ" означает "искать буквенную строку" РАСШИРЕНИЕ ". Затем введите <enter>
- и вы должны быть в первом появлении термина EXPANSION, которое происходит в начале Здесь описываются все виды расширений, которые оболочка Bash делает в вашей строке после ее ввода и перед выполнением преобразованной команды.
Когда в пейджере вы можете ввести h
, чтобы получить список возможных команд.
Надеюсь, это было не слишком основательно. Если вы этого не видели раньше, трудно понять.
В некоторых репозиториях git describe --tags
нет информации, а простой git tag | tail -1
может привести к неправильному тегу, поскольку git сортирует теги странным образом.
Для меня лучшая команда - это вариация хвоста
VERSION = $(git tag | sort -V | tail -1)
VERSION=$(git tag | sort -V | tail -1)
- идеальный ответ для получения последних тегов. Другие команды не дают точное имя тега.
"git tag --contains | tail -1", (git tag --contains) перечисляет все теги в текущей ветке, (tail -1) ограничивает количество результатов вывода равным l, и это последний.