2016-08-24 5 views
0

私は自分のローカルコンピュータでリファクタリングを行いました(コミットA、B、C、D)ので、出力ファイルが変更されていないことを常に確認しました。マージした後(コミットI)、出力ファイルが変更されたことがわかりました。コミットがバグを含む方法を見つける方法

コミット(E、F、G、H)が変更理由を見つける方法を教えてください。

A->B->C->D -I 

\E->F->G->H/ 

ありがとう!

+0

'git log --name-only'の出力には、変更されたファイルの名前が表示されます。 –

答えて

3

あなたはgit bisect以降です。あなたはそれに悪い良いリビジョンを与えてから、それらの中間をチェックし、このコミットが良い、悪い、または未知であるかどうかをあなたが伝えるのを待ちます(例えば、コミットでコンパイルしないため)。残りの半分の次の中間。このバイナリ検索アルゴリズムは非常に速く、出力を変更したコミットを提供します。

また、出力ファイルがスクリプトで変更されたかどうかを判断するプロセスを自動化できる場合は、そのスクリプトにgit bisectを付けることができます。スクリプトは自動的にスクリプトを実行して、良いか悪いかを判断します。結果。

+0

これは過度のようです。 'git log'の出力を解析するだけではどうですか? –

+0

@OliverCharlesworth彼は、コミットが大きすぎて責任を取らないと言い、ファイルが変更されたことは知らないが、出力だけが変更されると述べたからです。また、4つ以上のコミットが問題になる可能性があり、上記は一例に過ぎません。 Bisectは彼の要求に対してまさに正しいツールです。 :-) – Vampire

+0

ああ、私は "出力ファイルが変更された"と誤解しているかもしれません - 当初は、ソース制御ファイルの一部が変更されたと想定していました。もちろん、テストの結果を意味する可能性が非常に高いです。その場合、あなたは正しいです。 –

関連する問題