How can I see git bisect status of commits in git log?
Asked Answered
B

1

5

I'm doing a git bisect, and I've found a few good and bad commits so far, which I can confirm by running git bisect log.

However, if I run git log for my branch git log --graph --decorate=full origin/master..mybranch I can see it display that a certain commit is origin/mybranch and mybranch, and that another that I currently have checked out is (HEAD), but it doesn't display the commits that were "good" or "bad" with anything.

My git version is "git version 2.40.0.windows.1".

Here's a reproduction using a publicly available git repo.

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.


Running of git bisect log:

$ 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

What I expected: some text of "good" or "bad" after certain commits, what I actually got: nothing.

Bestead answered 8/5, 2023 at 3:54 Comment(0)
R
3

You need to include the bisect refs with either (simplest, shows all refs):

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

Or (longer but more precise):

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

Here I’ve listed refs/bisect along with the default decorated refs so that we don’t include more than we want. [1]

Explanation

--decorate=full means that refs are shown “in full”, in other words the full ref path:

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

“Full” doesn’t mean “all kinds of refs” (that’s at least what I thought at first).

The command git log --graph --decorate=full origin/master..mybranch doesn’t work because refs/bisect is not decorated by default. I don’t think man git-log [2] is terribly direct about documenting what the default refs are, but it is mentioned as a sort of appendix to one of the switches:

If none of these options or config settings are given, then references are used as decoration if they match HEAD, refs/heads/, refs/remotes/, refs/stash/, or refs/tags/.

Notes

  1. There is also the config option log.excludeDecoration
  2. Git 2.40.1
Rocketry answered 8/5, 2023 at 17:19 Comment(1)
git log --oneline --graph --glob=refs/bisect/bad* --not --glob=refs/bisect/good* (or new/old or whatever terms you're using instead of bad/good) might be useful.Briony

© 2022 - 2024 — McMap. All rights reserved.