如何在git log中查看git bisect标记的提交状态?
在执行git bisect操作时,已标记若干good和bad提交,可通过git bisect log确认这些标记。但执行git log --graph --decorate=full origin/master..mybranch查看分支提交时,能显示分支及HEAD标记,却看不到标记为good或bad的提交标识。使用的Git版本为git version 2.40.0.windows.1。
复现步骤
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
执行上述git log命令后,输出未显示good/bad标记,但git bisect log能看到对应标记,期望git log能显示这些标识却未实现。
Git的git bisect标记的good/bad状态并非存储为可被git log --decorate识别的引用(如分支、标签),而是保存在bisect操作的临时文件中,因此默认的git log命令不会自动展示这些标记。可以通过以下两种方式解决:
使用
git bisect visualize命令
这个命令是Git专为bisect场景提供的可视化工具,本质是封装了git log并自动加入bisect标记的展示逻辑,直接执行即可看到带good/bad标识的提交图:git bisect visualize你也可以给它追加
git log的参数,保持原来的图形化和完整装饰格式:git bisect visualize --graph --decorate=full master手动映射bisect标记到临时标签
如果你一定要用原生git log显示这些标记,可以通过git bisect log的输出,手动给对应提交打临时标签:# 提取bisect标记并创建临时标签 git bisect log | grep -E '(good|bad)' | while read type hash rest; do git tag "bisect-$type-$hash" "$hash" done之后执行
git log --graph --decorate=full master就能看到类似bisect-good-3a99fd1...的标签标记了。操作完成后可以用以下命令删除这些临时标签:git tag -l "bisect-*" | xargs git tag -d
内容的提问来源于stack exchange,提问作者Andrew Grimm

