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



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



какова команда, чтобы узнать, какой commit (SHA1 hash) я сейчас нахожусь? git status не дает этого.



Edit: я думаю, вызов git log и, глядя на первую запись работает?

531   5  
git

5 ответов:

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

  1. git show.
  2. git log -1.
  3. командной строке.
  4. git status.
  5. 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 или когда вы находитесь в состоянии "отсоединенной головы". В приведенном ниже примере у меня в настоящее время есть c1abcde проверил:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

Вариант 4: git status

также с версии git 1.8.3+ (и, возможно, раньше, снова не уверен), работает git status также покажет вам, что фиксация вы проверили во время деления пополам и когда вы находитесь в отстраненном состоянии головы:

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

Вариант 5: git bisect visualize

наконец, пока вы делаете 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

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

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

обновление:

другой вариант (если у вас есть теги):

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

$ git describe
v0.1.49-localhost-ag-1-g273cf91

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

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation

если вы хотите извлечь только простой кусок информации, вы можете сделать это с помощью git show С ...и попросите его не давать вам разницу с --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 коммиттер email
  • %ct дата фиксатора, временная метка UNIX
  • %cI дата фиксатора, строгий формат ISO 8601
  • %s тема
  • %f санированная строка темы, подходящая для имени файла
  • %gD reflog селектора, например, рефы/тайник@{1}
  • %gd укороченные reflog селектора, например, тайник@{1}

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

Comments

    Ничего не найдено.