Как я могу увидеть статус коммитов git bisect в журнале git?

Я делаю git bisect и на данный момент нашел несколько хороших и плохих коммитов, что я могу подтвердить, запустив git bisect log.

Однако, если я запускаю git log для своей ветки git log --graph --decorate=full origin/master..mybranch, я вижу, что он отображает, что определенный коммит — это origin/mybranch и mybranch, а другой, который я в настоящее время проверил, — (HEAD), но он не отображает коммиты, которые были «хорошими» или «плохими» с чем-либо.

Моя версия git — «git version 2.40.0.windows.1».

Вот воспроизведение с использованием общедоступного репозитория git.

git clone https://github.com/agrimm/zombie-chaser.git
cd zombie-chaser
git bisect start
git bisect bad d27ec73cf2f1df89cbccd41494f579e066bad6fe
git bisect good 3a99fd1ee5a20aa18e5202e9a8c3ee0ba04a740e
git log --graph --decorate=full master
* commit d27ec73cf2f1df89cbccd41494f579e066bad6fe (refs/remotes/origin/master, refs/remotes/origin/HEAD, refs/heads/master)
| Date:   Mon Apr 12 23:24:20 2010 +1000
|
|     Fixed typos, updated home page URL.
|
* commit ae1c1d263168cf123578ff5d50f4fc7eb9726a52 (HEAD)
| Date:   Sun Apr 11 22:17:39 2010 +1000
|
|     Bump up to version 0.1.0.
|
* commit 2a1e2a6c7d2b7036a36c291cc220cbc486815aa8
| Date:   Sun Apr 11 19:19:27 2010 +1000
|
|     Move library files and ui files into a lib subdirectory, and other changes to file loading.
|
* commit 3a99fd1ee5a20aa18e5202e9a8c3ee0ba04a740e
| Date:   Sun Apr 11 12:28:10 2010 +1000
|
|     Removed gosu as a dependency, to satisfy jruby.


Запуск журнала git bisect:

$ git bisect log
git bisect start
# status: waiting for both good and bad commits
# bad: [d27ec73cf2f1df89cbccd41494f579e066bad6fe] Fixed typos, updated home page URL.
git bisect bad d27ec73cf2f1df89cbccd41494f579e066bad6fe
# status: waiting for good commit(s), bad commit known
# good: [3a99fd1ee5a20aa18e5202e9a8c3ee0ba04a740e] Removed gosu as a dependency, to satisfy jruby.
git bisect good 3a99fd1ee5a20aa18e5202e9a8c3ee0ba04a740e

Что я ожидал: какой-то текст «хорошо» или «плохо» после определенных коммитов, что я на самом деле получил: ничего.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно включить bisect refs либо (самый простой, показывает все ссылки):

git log --decorate-refs=refs/ [other options]

Или (длиннее, но точнее):

git log --graph --decorate=full --decorate-refs=refs/bisect \
    --decorate-refs=refs/heads --decorate-refs=refs/tags \
    --decorate-refs=refs/remotes --decorate-refs=refs/stash \
    --decorate-refs=HEAD

Здесь я перечислил refs/bisect вместе с декорированными ссылками по умолчанию, поэтому что мы не включаем больше, чем хотим. [1]

Объяснение

--decorate=full означает, что рефы показаны «полностью», другими словами полный путь ссылки:

# with `--decorate=short`
master
# with `--decorate=full`
refs/heads/master

«Полный» не означает «всевозможные рефери» (по крайней мере, я так думал сначала).

Команда git log --graph --decorate=full origin/master..mybranch не работает, потому что refs/bisect по умолчанию не украшен. Я не думаю man git-log[2] ужасно прямолинейно документирует то, что ссылки по умолчанию есть, но это упоминается как своего рода приложение к одному из переключателей:

Если ни одна из этих опций или настроек конфигурации не указана, то ссылки используются в качестве украшения, если они соответствуют HEAD, refs/heads/, refs/remotes/, refs/stash/ или refs/tags/.

Примечания

  1. Также есть опция конфигурации log.excludeDecoration
  2. Гит 2.40.1
git log --oneline --graph --glob=refs/bisect/bad* --not --glob=refs/bisect/good* (или новый/старый, или любые другие термины, которые вы используете вместо плохих/хороших) могут быть полезны.
jthill 08.05.2023 21:47

Другие вопросы по теме