Найдите, какая фиксация в настоящий момент проверяется в Git
Я нахожусь в середине сеанса git bisect
.
Какую команду вы узнаете, какую фиксацию (SHA1 хэш) я сейчас нахожу? git status
не предоставляет этого.
Изменить: я предполагаю, что вызывается git log
и смотрит на первую запись?
Ответы
Ответ 1
У вас есть как минимум 5 различных способов просмотра фиксации, которую вы в настоящее время проверили в своей рабочей копии во время сеанса git bisect
(обратите внимание, что параметры 1-4 также будут работать, если вы не выполняете биссект):
-
git show
.
-
git log -1
.
- Bash.
-
git status
.
-
git bisect visualize
.
Я объясню каждый вариант подробно ниже.
Вариант 1: git показать
Как объяснено в этом ответе на общий вопрос о том, как определить, какая фиксация у вас есть в настоящее время (не только во время git bisect
), вы можете использовать git show
с опцией -s
для подавления вывода патча:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Вариант 2: git log -1
Вы также можете просто сделать git log -1
, чтобы узнать, какой фиксацией вы в данный момент находитесь.
$ git log -1 --oneline
c1abcde Add feature-003
Вариант 3: Bash prompt
В git версии 1.8.3+ (или это была более ранняя версия?), если у вас есть приглашение Bash, настроенное для отображения текущей ветки, которую вы проверили в своей рабочей копии, тогда она также покажет вы текущая фиксация, которую вы проверили во время сеанса bisect или когда вы находитесь в состоянии "отсоединенного HEAD". В приведенном ниже примере я в настоящее время проверил c1abcde
:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
Вариант 4: git статус
Также, как и в git версии 1.8.3+ (и, возможно, раньше, опять же не уверен), запуск git status
также покажет вам, что зафиксировать вы проверили во время деления пополам и когда вы находитесь в состоянии автономного состояния HEAD
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Вариант 5: git bisect визуализировать
Наконец, пока вы делаете git bisect
, вы также можете просто использовать git bisect visualize
или его встроенный псевдоним git bisect view
запустите gitk
, чтобы вы могли графически просмотреть, на какой фиксации вы находитесь, а также за что вы отметили как плохую и хорошую до сих пор. Я уверен, что это существовало задолго до версии 1.8.3, я просто не уверен, в какой версии она была введена:
git bisect visualize
git bisect view # shorter, means same thing
![enter image description here]()
Ответ 2
Вы можете просто сделать:
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
Ответ 3
$ 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
Ответ 4
Если вы хотите извлечь только простую часть информации, вы можете получить это, используя 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}
Ответ 5
Используйте git show
, в котором также отображается сообщение о фиксации, и по умолчанию используется текущий коммит при отсутствии аргументов.