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]