git bisect первое предположение вне границ

Я пытаюсь использовать git bisect

Я определил, что плохой коммит:

2ac4ac0a46d902235a51216b24257a977877979a at 19 Oct 2016

Первый хороший коммит, который я нашел:

6a1d1ec5599d011a75df18075feb1819f1ad8877 at 9 Jan 2016

Итак, я бегу:

> git bisect start
> git bisect good 6a1d1ec5599d011a75df18075feb1819f1ad8877 
> git bisect bad 2ac4ac0a46d902235a51216b24257a977877979a
Bisecting: 3639 revisions left to test after this (roughly 12 steps)
[51450765b77e07b853b7efd0799aaeb2fbb5a0ea] only show canvas-player controls when not playing && controls = true

Теперь проблема в том, что первое предположение, которое сделал инструмент пополам:

51450765b77e07b853b7efd0799aaeb2fbb5a0ea at 21 May 2015

Который находится за пределами начальных 2 дат принятия. Как это может быть?

2 ответа

Возможность, предполагая что-то вроде следующего:

* d4349a4 (master, HEAD) Commit 10
* 9816794 (broken) Commit 9
* abaf79f Commit 8
*   e76f38f Merge branch 'branch1'
|\
| * e897f8e (branch1) Branch 5
| * d8b71a8 Branch 4
| * 1832b61 Branch 3
| * a821494 (working) Branch 2
| * 12c87e1 Branch 1
* | 2b94daa Commit 7
* | 515bea5 Commit 6
* | 516af15 Commit 5
* | 5a33f68 Commit 4
* | 66c18bc Commit 3
|/
* 7d10cd8 Commit 2
* 71bc62e Commit 1

Если вы бежите git bisect broken working а потом git bisect visualize --oneline ( Чтобы увидеть оставшихся подозреваемых в настоящее время) вы увидите что-то вроде:

9816794 (broken, refs/bisect/bad) Commit 9
abaf79f Commit 8
e76f38f Merge branch 'branch1'
e897f8e (branch1) Branch 5
d8b71a8 Branch 4
1832b61 Branch 3
2b94daa (HEAD) Commit 7
515bea5 Commit 6
516af15 Commit 5
5a33f68 Commit 4
66c18bc Commit 3

Причина, почему совершает от master В ветку включены, чтобы те тоже могли внести ошибку.

git bisect использует "родительское" отношение между коммитами, а не их датами.

С такими действиями, как git commit --amend, git rebase или же git cherry-pickВы можете создавать последовательности коммитов, где даты не соответствуют последовательности коммитов.


Вы можете проверить на графическом инструменте, если 51450765b77 лежит между 6a1d1ec а также 2ac4ac0или в терминале с помощью git log --graph --oneline:

git log --graph --oneline [firstgoodcommit]..[badcommit]
Другие вопросы по тегам