web-dev-qa-db-ja.com

git bisectによるとBisecting:マージベースをテストする必要があります

私はgitbisectを実行し、結果を得ました

Bisecting: a merge base must be tested
[bbdaf1111eea5365c0c94d6045d6263aab718925] Fix display bug with main-stage

どうすれば続行できますか?

17
Alex

これは、指定された良いリビジョンと悪いリビジョンが互いに直接の子孫でない場合に発生します。

このようなリポジトリを想定しましょう(コミットに模範的な名前を使用):

* 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-commitbad-commitの間にバグは導入されませんでした

エラーがmerge-base-commitに存在したと想定します。この場合、good-commitとbad-commitの違いにバグをもたらしたコミットを見つけることはできません。代わりに、コミットa1a2、および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-commitbad-commitの間に問題が発生しました

一方、マージベースが良好な場合、問題はb1b2、またはbad-commitで発生しました。次に、bisectmerge-base-commitbad-commitの間で続行し、それらのコミットの中間でコミットを選択し、それが適切かどうかをテストします。

$ git bisect good
Bisecting: 0 revisions left to test after this (roughly 1 step)
[fbd1f] b2
20
lucash

これが良いコミットか悪いコミットかをgit bisectに伝える必要があります。問題の「テスト」とは、見つけようとしているバグ/機能についてコードをテストすることです。

できるよ

git bisect good

または

git bisect bad

続ける。

3
willoller

実行させてください。二等分する必要のあるパスにマージがある場合は正常です。

3
eftshift0