Что делает git rev-parse
?
Я прочитал справочную страницу, но это вызвало больше вопросов, чем ответов. Вещи как:
Выбрать и параметры массажа
Массаж ? Что это значит?
Я использую в качестве резольвера (для SHA1) спецификаторов ревизии, как
git rev-parse HEAD^
или
git rev-parse origin/master
Это цель команды? Если нет, то даже правильно ли использовать его для достижения этой цели?
git
git-rev-parse
talles
источник
источник
rev-parse
команды. Вы также можете использовать его для нормализации командной строки, чтобы реальной программе не приходилось понимать сложный синтаксис имени объекта Git (вы могли бы использоватьgit rev-parse
для изменения или «массажа» определенные параметры в командной строке перед актуальная программа называется).git rev-parse
смехотворно непостижима. Я удивлен, что никто не удосужился переписать этот жаргон на что-то понятное человеку, даже после 5 лет.Ответы:
git rev-parse
является вспомогательнойplumbing
командой, в основном используемой для манипуляций.Одним из распространенных применений
git rev-parse
является печать хэшей SHA1 с указанием ревизии. Кроме того, он имеет различные параметры для форматирования этого вывода, например,--short
для печати более короткого уникального SHA1.Также есть и другие варианты использования (в скриптах и других инструментах, построенных поверх git), для которых я использовал:
--verify
проверить, что указанный объект является допустимым объектом git.--git-dir
для отображения абс / относительный путь.git
каталога.--is-inside-git-dir
или внутри рабочего дерева, используя--is-inside-work-tree
--is-bare-repository
--branches
), тегов (--tags
) и ссылок также может быть отфильтрована на основе удаленного (с использованием--remote
)--parse-opt
нормализовать аргументы в скрипте (вроде какgetopt
) и вывести строку вывода, которую можно использовать сeval
Massage
просто подразумевает, что можно преобразовать информацию из одной формы в другую, то есть команду преобразования. Вот несколько быстрых примеров, о которых я могу подумать:A..B
дляgit log
илиgit diff
в эквивалентных аргументах для базовой сантехнической команды какB ^A
источник
Просто для того, чтобы уточнить этимологию имени команды
rev-parse
, Git последовательно использует терминrev
в сантехнических командах как сокращение от «revision» и обычно означает 40-символьный хэш SHA1 для фиксации. Команда,rev-list
например, печатает список хешей фиксации из 40 символов для ветви или чего-либо еще.В этом случае имя может быть расширено до
parse-a-commitish-to-a-full-SHA1-hash
. В то время как команда имеет несколько вспомогательных функций, упомянутых в ответе Tuxdude, ее тезка, по-видимому, является прецедентом преобразования удобной для пользователя ссылки, такой как имя ветви или сокращенный хеш, в однозначный 40-символьный хеш SHA1, наиболее полезный для многих программ / сантехники. цели.Я знаю, что думал, что это было "обратным анализом" чего-то довольно долгое время, прежде чем я понял это и испытал те же проблемы с пониманием терминов "массаж" и "манипуляция" :)
Во всяком случае, я нахожу это понятие «анализ-пересмотр» удовлетворительным образом обдумать это и надежной концепцией доведения этой команды до ума, когда мне нужны такие вещи. Часто в сценариях Git вы принимаете удобную для пользователя ссылку на коммит в качестве пользовательского ввода и обычно хотите, чтобы она была преобразована в проверенную и однозначную рабочую ссылку как можно скорее после ее получения. В противном случае входной перевод и проверка имеют тенденцию распространяться через сценарий.
источник
messaging
иmanipulation
как вы намекаете раньше?git rev-parse
это сокращение отgit revision-parse
. Он принимает данные и возвращает соответствующий 40-значный идентификатор редакции.git rev-parse
Также работает для получения текущего имени ветки с помощью флага --abbrev-ref, например:источник
git log --format=%B -n 1 <revision>