Я сделал bisect git и получил результат
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
Как я могу продолжить?
Я сделал bisect git и получил результат
Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage
Как я могу продолжить?
Это произойдет, если данная хорошая и плохая редакция не являются прямыми потомками друг друга.
Давайте предположим, что репозиторий выглядит следующим образом (используя примерные имена для коммитов):
* dffa2 good-commit
* b38f4 a2
* cc19f a1
| * d1f17 bad-commit
| * fbd1f b2
| * f66cc b1
|/
* 09f66 merge-base-commit
Поскольку в сообщении используется термин "база слияния", может быть полезно понять этот термин, чтобы понять сообщение. "База слияния" двух или более коммитов - это последний коммит, который является родителем всех этих коммитов.
Поэтому, если эти коммиты будут объединены, все изменения между "базой слияния" и этими коммитами будут объединены вместе. Каждый коммит, который является родителем "базы слияния", не имеет отношения к слиянию, он уже является родителем всех задействованных коммитов.
Описанное сообщение произойдет в таком случае:
$ git bisect start
$ git bisect good good-commit
$ git bisect bad bad-commit
Bisecting: a merge base must be tested
[09f66] merge-base-commit
Что делает пополам, так это найти коммит, который привел к проблеме (приводящей к bad
состоянию), что в этом случае может привести к проблеме:
good-commit
и bad-commit
Предположим, что ошибка существовала в merge-base-commit. В этом случае будет невозможно найти коммит, который привел к ошибке, в разнице между good-commit и bad-commit. Вместо этого один из good-commit
a1
, a2
и good-commit
решает проблему, и это именно то, что произойдет, если вы решите, что база слияния плохая:
$ git bisect bad
The merge base merge-base-commit is bad.
This means the bug has been fixed between 09f66 and [dffa2].
merge-base-commit
и bad-commit
С другой стороны, если база слияния хорошая, проблема была введена в b1
, b2
или bad-commit
. Затем bisect
продолжит работу между merge-base-commit
и bad-commit
, выбирая коммит в середине между этими коммитами и проверяя, хорош ли тот:
$ git bisect good
Bisecting: 0 revisions left to test after this (roughly 1 step)
[fbd1f] b2
Вам просто нужно сообщить git bisect
, если это хорошая фиксация или плохой коммит. "Тест", о котором идет речь, заключается в том, что вы проверяете свой код на наличие ошибки/функции, которую вы пытаетесь найти.
Вы можете сделать
git bisect good
или
git bisect bad
чтобы продолжить.
Пусть он запускается, это нормально, если есть сливы по пути, который нужно делить пополам.