Bisect, чтобы найти коммит, который _fixed_ ошибка
Обычный вариант использования для "git bisect" - объявить кончик ссылки "плохим" состоянием и искать в истории последнее "хорошее" состояние. Это имеет смысл при поиске коммита, который внес ошибку.
Однако иногда в более старом коде обнаруживается ошибка, которая исправляется в новейшем коммите, и возникает вопрос: какой коммит исправил эту ошибку? Можно использовать git bisect
с обратным смыслом слов "хороший" и "плохой", то есть считают исправленную ошибку "плохим", а ошибку - "хорошим". Но это немного сбивает с толку - может быть более понятным начать биссект в "хорошем" состоянии и искать "плохое" состояние. Но Git, похоже, не нравится такой подход:
$ git bisect start
$ git bisect good
$ git checkout <commit with known bug>
$ git bisect bad
Some good revs are not ancestor of the bad rev.
git bisect cannot work properly in this case.
Maybe you mistake good and bad revs?
Какой хороший способ справиться с этим делом?
1 ответ
Возможно, вы заметили, что git - это не столько "симпатичный" и "интуитивно понятный интерфейс". Вы догадались об ответе и правильном подходе: просто думайте, что исправлено как плохое, а не исправлено как хорошее
Так как это отлично справляется с вашим (менее распространенным) делом, помимо того, что оно немного уродливо, в git не требуется специальной поддержки, и вы можете предположить, что этого никогда не будет.