Я нахожусь в середине git bisect
сеанса.
Какая команда, чтобы узнать, какой коммит (хэш SHA1) я в данный момент? git status
не обеспечивает это.
Редактировать: я думаю, что звонить git log
и смотреть на первую запись работает?
У вас есть как минимум 5 различных способов просмотра коммита, который вы в настоящее время извлекли в свою рабочую копию во время git bisect
сеанса ( обратите внимание, что варианты 1-4 также будут работать, когда вы не делите пополам ):
git show
,git log -1
,git status
,git bisect visualize
,Я объясню каждый вариант подробно ниже.
Как объясняется в этом ответе на общий вопрос о том, как определить, какой коммит вы в данный момент извлекли (не только во время git bisect
), вы можете использовать git show
с -s
опцией, чтобы подавить вывод патча:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Вы также можете просто git log -1
узнать, на каком коммите вы сейчас находитесь.
$ git log -1 --oneline
c1abcde Add feature-003
В Git версии 1.8.3+ (или это была более ранняя версия?), Если у вас есть приглашение Bash, настроенное для отображения текущей ветки, которую вы извлекли, в вашей рабочей копии, тогда оно также покажет вам текущий зафиксированный вами коммит. во время сеанса деления пополам или когда вы находитесь в состоянии «отсоединенная ГОЛОВА». В приведенном ниже примере я в настоящее время c1abcde
проверил:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
Также в Git версии 1.8.3+ (и, возможно, ранее, опять же не уверен), запуск git status
также покажет вам, какой коммит вы извлекли во время деления и когда вы находитесь в отсоединенном состоянии HEAD:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Наконец, пока вы делаете git bisect
, вы также можете просто использовать git bisect visualize
или его встроенный псевдоним git bisect view
для запуска gitk
, чтобы вы могли графически просматривать, какой коммит вы используете, а также, какие коммиты вы пометили как плохие и хорошие на данный момент. Я уверен, что это существовало задолго до версии 1.8.3, я просто не уверен, в какой версии это было представлено:
git bisect visualize
git bisect view # shorter, means same thing
git log -p -S <search>
не делаю пополам, в основном это работа.git status
не показывает идентификатор фиксации, если вы не находитесь в отключенном состоянии. в противном случае написано "На ветке все что угодно "git show
хотя работаетВы можете просто сделать:
Чтобы объяснить немного подробнее:
git rev-parse
это основная команда git для интерпретации любого экзотического способа, которым вы можете указать имя коммита, иHEAD
является ссылкой на ваш текущий коммит или ветвь. (Вgit bisect
сеансе он указывает непосредственно на коммит («отсоединенный HEAD»), а не на ветвь.)В качестве альтернативы (и легче запомнить) было бы просто сделать:
... по умолчанию показывает коммит, на который
HEAD
указывает. Для более краткой версии вы можете сделать:источник
git rev-parse HEAD
требует обработки против всех альтернатив мусора.Обновить:
В качестве альтернативы (если у вас есть теги):
(Хорошо подходит для обозначения версии, но не очень хорошо для возврата к git.)
Или (как предложил Марк, перечислив здесь для полноты):
источник
Если вы хотите извлечь только простой кусок информации, вы можете получить , что при использовании
git show
с--format=<string>
опцией ... и попросить его , чтобы не дать вам различия с--no-patch
. Это означает, что вы можете получить вывод в стиле printf того, что вы хотите, что часто может быть одним полем.Например, чтобы получить только сокращенный хеш (
%h
), вы можете сказать:Если вы хотите сохранить это в переменной окружения в bash (вероятно, люди захотят это сделать), вы можете использовать
$()
синтаксис :Полный список того, что вы можете сделать, находится в
git show --help
. Но вот сокращенный список свойств, которые могут быть полезны:%H
совершить хэш%h
сокращенный коммит хеш%T
хэш дерева%t
сокращенный хэш дерева%P
родительские хеши%p
сокращенные родительские хеши%an
имя автора%ae
электронная почта автора%at
дата автора, метка времени UNIX%aI
дата автора, строгий формат ISO 8601%cn
имя коммиттера%ce
электронная почта коммиттера%ct
дата принятия, отметка времени UNIX%cI
дата коммиттера, строгий формат ISO 8601%s
тема%f
очищенная строка темы, подходящая для имени файла%gD
Селектор reflog, например, refs / stash @ {1}%gd
сокращенный селектор reflog, например, stash @ {1}источник
show
имеет ничего для ветки .Use
git show
, который также показывает вам сообщение о коммите и по умолчанию принимает текущий коммит, если ему не предоставлено никаких аргументов.источник