Найти, какой коммит в настоящее время проверен в Git

Я нахожусь в середине сеанса git bisect.

Какова команда, чтобы узнать, какой коммит (хэш SHA1) в данный момент используется? git status этого не обеспечивает.

Редактировать: я думаю, что вызов git log и просмотр первой записи работает?

git
117 голосов | спросил Steven Lu 23 J0000006Europe/Moscow 2012, 12:51:38

5 ответов


0

У вас есть как минимум 5 различных способов просмотра коммита, который вы в настоящий момент извлекли в свою рабочую копию во время сеанса git bisect ( обратите внимание, что варианты 1-4 также будут работать, когда вы не делаете биссект ):

  1. git show литий>
  2. git log -1 литий>
  3. приглашение Bash.
  4. git status литий>
  5. git bisect visualize литий>

Я объясню каждый вариант подробно ниже.

Вариант 1: git show

Как описано в этом ответе На общий вопрос о том, как определить, какой коммит вы в данный момент извлекли (не только во время git bisect), вы можете использовать ---- +: = 6 =: + ---- с опцией git show для подавления вывода патча

-s

Вариант 2: git log -1

Вы также можете просто выполнить $ git show --oneline -s a9874fd Merge branch 'epic-feature' , чтобы узнать, на каком коммите вы сейчас находитесь.

git log -1

Вариант 3: приглашение Bash

В Git версии 1.8.3+ (или это была более ранняя версия?), если у вас есть приглашение Bash, настроенное для отображения текущей ветки, которую вы извлекли в рабочую копию, то оно также покажет вам текущий коммит Вы проверили во время сеанса деления пополам или когда вы находитесь в состоянии «отсоединенного HEAD». В приведенном ниже примере у меня в данный момент есть $ git log -1 --oneline c1abcde Add feature-003 :

c1abcde

Вариант 4: git status

Кроме того, начиная с Git версии 1.8.3+ (и, возможно, ранее, опять же не уверен), запуск # Prompt during a bisect user ~ (c1abcde...)|BISECTING $ # Prompt at detached HEAD state user ~ (c1abcde...) $ также покажет вам, что коммит вы извлекли во время биссектрисы и когда вы находитесь в отключенном состоянии HEAD:

git status

Вариант 5: визуализация git bisect

Наконец, пока вы делаете $ git status # HEAD detached at c1abcde <== RIGHT HERE , вы также можете просто использовать git bisect или его встроенный псевдоним git bisect visualize для запуска git bisect view, чтобы вы могли графически просматривать, какой коммит вы используете, а также, какие коммиты вы пометили как плохие и хорошие на данный момент. Я уверен, что это существовало задолго до версии 1.8.3, я просто не уверен, в какой версии это было представлено:

 gitk

введите описание изображения здесь

ответил 10 PM000000120000000131 2013, 12:46:01
0

Вы можете просто сделать:

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
ответил Mark Longair 23 J0000006Europe/Moscow 2012, 12:53:32
0
$ git rev-parse HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

Update:

В качестве альтернативы (если у вас есть теги):

(Хорошо подходит для наименования версии, но не очень хорошо для возврата в git.)

$ git description
v0.1.49-локальный-AG-1-g273cf91

Или (как предложил Марк, перечисляя здесь для полноты):

$ git show --oneline -s
c0235b7 Автоматически загружать загруженные изображения на основе ориентации EXIF
ответил Alexander Gladysh 23 J0000006Europe/Moscow 2012, 12:53:06
0

Если вы хотите извлечь простую часть информации, вы можете получить ее, используя git show с --format=<string> option ... и попросить его не давать вам 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 зафиксировать хеш
  • %h сокращенный хеш коммита
  • %T хеш дерева
  • %t сокращенный хэш дерева
  • %P родительские хеши
  • %p сокращенные родительские хеши
  • %an имя автора
  • %ae электронная почта автора
  • %at дата автора, отметка времени UNIX
  • %aI дата автора, строгий формат ISO 8601
  • %cn имя коммиттера
  • %ce электронная почта коммиттера
  • %ct дата принятия, отметка времени UNIX
  • %cI дата принятия, строгий формат ISO 8601
  • %s тема
  • %f очищенная строка темы, подходящая для имени файла
  • %gD селектор журналов, например refs /stash @ {1}
  • %gd сокращенный селектор reflog, например, stash @ {1}
ответил HostileFork 2 MaramThu, 02 Mar 2017 10:37:12 +03002017-03-02T10:37:12+03:0010 2017, 10:37:12
0

Используйте git show, в котором также отображается сообщение о коммите и по умолчанию используется текущий коммит, если не задано никаких аргументов.

ответил asmeurer 23 J0000006Europe/Moscow 2012, 14:37:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132