git中此前的bisect会话状态是否存储?能否重新加载重测提交状态?
Git已关闭bisect会话的恢复说明
首先明确结论:默认执行git bisect reset关闭会话后,Git不会持久化存储本次bisect的会话数据,没有内置的「重新加载原有会话」功能,但可以通过以下途径找回历史记录复现流程:
重置后短时间内的复现方法
如果执行git bisect reset后没有做过多修改Git引用的操作,可通过reflog找回所有bisect相关操作记录:
- 执行
git reflog,筛选带有bisect前缀的记录,所有你此前标记为good/bad的提交、bisect自动检出的中间提交都会在reflog中留存 - 手动整理这些提交记录后,重新开启新的bisect会话,依次标记对应提交的good/bad状态,即可还原此前的bisect流程重新验证
后续bisect会话的留存方案
如果后续需要提前保留bisect流程方便回溯,可在关闭bisect会话前操作:
- 导出bisect完整操作日志:
git bisect log > bisect_xxxx.log,日志会完整记录所有标记操作和提交哈希 - 后续需要复现时,开启新的bisect会话后执行
git bisect replay 你的日志文件路径,即可自动还原所有此前的标记状态,无需手动重新输入
如果执行git bisect reset的时间已经超过30天(Git默认reflog的保留时长),且当时没有导出日志,就无法找回原有会话的标记记录,只能重新执行bisect流程。
内容的提问来源于stack exchange,提问作者bbercz
相关产品推荐
相关产品推荐

