Я нахожусь в середине сеанса 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
, в котором также отображается сообщение о фиксации, и по умолчанию используется текущий коммит при отсутствии аргументов.