При использовании git bisect
можно запустить git bisect skip
, чтобы пометить текущую фиксацию как незастроенную/непроверенную, чтобы попытаться получить Git, чтобы выбрать другую фиксацию для проверки.
Как Git решить, какой фиксатор попробовать после git bisect skip
? Эксперимент показывает, что это не только смежная фиксация, но я не могу выработать шаблон.
Изменить. Я знаю, что базовый git bisect
- это двоичный поиск, но мне любопытно git bisect skip
, что явно делает что-то более сложное.
Эксперимент показывает, что он не просто выбирает смежную фиксацию; ниже создается 100 коммитов с номером 0 – 99 затем начинается их деление пополам. Первый фиксатор git bisect
выбирается посередине, но каждый git bisect skip
после этого кажется более или менее случайным.
$ git init
Initialized empty Git repository in .git/
$ for (( i=0; i<100; i++ )); do echo $i > file; git add file; git commit -m $i >/dev/null; done # Create some dummy commits
$ git bisect start HEAD $(git rev-list --max-parents=0 HEAD) # HEAD is bad, root commit is good.
Bisecting: 49 revisions left to test after this (roughly 6 steps)
[099e5cf2ccde625f92dc369da6cad0bdf2852ce4] 49
$ git bisect skip
Bisecting: 49 revisions left to test after this (roughly 6 steps)
[88c8208a7c4322222124167e49f07c741af7d3d8] 60
$ git bisect skip
Bisecting: 49 revisions left to test after this (roughly 6 steps)
[04695f2e5b2473c3ac72435c0dbfc3ba1375abda] 88
$ git bisect skip
Bisecting: 49 revisions left to test after this (roughly 6 steps)
[1e9bf3d29589bcac2d8c467245ae8d446c195252] 40
$ git bisect skip
Bisecting: 49 revisions left to test after this (roughly 6 steps)
[9459ed79e4112d674681c8f0f921127217c7ebc6] 13