Ответы:
У вас есть как минимум 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 statusне показывает идентификатор фиксации, если вы не находитесь в отключенном состоянии. в противном случае написано "На ветке все что угодно " git showхотя работает
Вы можете просто сделать:
git rev-parse HEAD
Чтобы объяснить немного подробнее: git rev-parseэто основная команда git для интерпретации любого экзотического способа, которым вы можете указать имя коммита, и HEADявляется ссылкой на ваш текущий коммит или ветвь. (В git bisectсеансе он указывает непосредственно на коммит («отсоединенный HEAD»), а не на ветвь.)
В качестве альтернативы (и легче запомнить) было бы просто сделать:
git show
... по умолчанию показывает коммит, на который HEADуказывает. Для более краткой версии вы можете сделать:
$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
git rev-parse HEADтребует обработки против всех альтернатив мусора.
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
Обновить:
В качестве альтернативы (если у вас есть теги):
(Хорошо подходит для обозначения версии, но не очень хорошо для возврата к git.)
$ git description v0.1.49-локальный-AG-1-g273cf91
Или (как предложил Марк, перечислив здесь для полноты):
$ git show --oneline -s c0235b7 Автоматически загружать загруженные изображения на основе ориентации EXIF
Если вы хотите извлечь только простой кусок информации, вы можете получить , что при использовании git showс --format=<string>опцией ... и попросить его , чтобы не дать вам различия с --no-patch. Это означает, что вы можете получить вывод в стиле printf того, что вы хотите, что часто может быть одним полем.
Например, чтобы получить только сокращенный хеш ( %h), вы можете сказать:
$ git show --format="%h" --no-patch
4b703eb
Если вы хотите сохранить это в переменной окружения в bash (вероятно, люди захотят это сделать), вы можете использовать $()синтаксис :
$ GIT_COMMIT="$(git show --format="%h" --no-patch)"
$ echo $GIT_COMMIT
4b703eb
Полный список того, что вы можете сделать, находится в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имеет ничего для ветки .
git log -p -S <search>не делаю пополам, в основном это работа.