Я нахожусь в середине сеанса git bisect.
Какую команду вы узнаете, какую фиксацию (SHA1 хэш) я сейчас нахожу? git status не предоставляет этого.
Изменить: я предполагаю, что вызывается git log и смотрит на первую запись?
Я нахожусь в середине сеанса 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, настроенное для отображения текущей ветки, которую вы проверили в своей рабочей копии, тогда она также покажет вы текущая фиксация, которую вы проверили во время сеанса bisect или когда вы находитесь в состоянии "отсоединенного HEAD". В приведенном ниже примере я в настоящее время проверил 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 rev-parse HEAD
Чтобы подробнее пояснить: git rev-parse - это git основная команда для интерпретации любого из экзотических способов, которые вы можете указать имя фиксации и HEAD является ссылкой на вашу текущую фиксацию или ветвь. (В сеансе git bisect он указывает непосредственно на фиксацию ( "отдельная головка" ), а не на ветку.)
Альтернативно (и проще запомнить) было бы просто:
git show
... который по умолчанию указывает на фиксацию, на которую указывает HEAD. Для более сжатой версии вы можете:
$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
Update:
Альтернативно (если у вас есть теги):
(Хорошо для именования версии, не очень хорошо для возврата к git.)
$ git describe v0.1.49-localhost-ag-1-g273cf91
Или (как предложил Марк, перечисляя здесь для полноты):
$ git show --oneline -s c0235b7 Autorotate uploaded images based on EXIF orientation
Если вы хотите извлечь только простую часть информации, вы можете получить это, используя git show с опцией --format=<string>... и попросите ее не давать вам diff с --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 commit hash%h сокращенный хеш фиксации%T хэш дерева%T сокращенный хэш дерева%P родительские хеши%P сокращенные родительские хэши%an имя автора%ae адрес электронной почты автора%at дата автора, отметка времени UNIX%aI дата автора, строгий формат ISO 8601%cn имя коммиттера%ce committer email%ct дата коммиттера, отметка времени UNIX%cI дата коммиттера, строгий формат ISO 8601%s тема%f дезинфицированная строка темы, подходящая для имени файла%gD селектор reflog, например, refs/stash @{1}%gD сокращенный селектор reflog, например, stash @{1}Используйте git show, в котором также отображается сообщение о фиксации, и по умолчанию используется текущий коммит при отсутствии аргументов.