私はgitbisectを実行し、結果を得ました
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
メッセージでは「マージベース」という用語が使用されているため、その用語を理解してメッセージを理解すると役立つ場合があります。 2つ以上のコミットの「マージベース」は、それらすべてのコミットの親である最新のコミットです。
したがって、これらのコミットがマージされる場合、「マージベース」とそれらのコミットの間のすべての変更が一緒にマージされます。 「マージベース」の親であるすべてのコミットは、マージに関連していません。すでに、関連するすべてのコミットの親です。
説明されているメッセージは、次のような場合に発生します。
$ 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の違いにバグをもたらしたコミットを見つけることはできません。代わりに、コミット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
続ける。
実行させてください。二等分する必要のあるパスにマージがある場合は正常です。