そのため、ファイルの 1 つにパッチを作成していたところ、存在しないはずのコードがいくつかありました (この悪意のあるコードによって引き起こされた Web ページのエラーと相まって)。コードは数か月前にパッチで追加され、約 1 か月前にそのコミットを元に戻すことで削除されました。だから本当にあってはならない。
どこから来たのかを突き止めるために、いくつかの方法を試しました。
- git Blame: 奇妙なことに、コードを追加した元のコミットのコミット タグとメッセージが表示されました。まるで元に戻すことがなかったかのように。
- git log -- filename: 元に戻すことを含め、そこにあると予想されるすべてのコミットを表示しましたが、その後、再表示する必要があることを示唆するものは何もありませんでした。
- 手動チェック パッチ (バイセクト): コードは復帰直後のコミットで再表示されましたが、そのパッチをチェックアウトすると、そのログはまったく異なり、復帰はありませんでした。
この最後の観察から、問題のパッチは失敗したマージであると結論付けましたが、コミット メッセージにはマージについての言及はなく、私たちのチームは通常、git が生成したマージ メッセージを保持しています。
それで、そのように見えますか?競合の解決中に間違った選択をして、コードが再導入されましたか? もしそうなら、この種のものを見つけるためのより速い方法はありますか? たとえば、git の非難は、コードが私の元のパッチから来たと述べています。しかし、元に戻した後、パッチ X で再導入されたことを直接教えてもらう方法はありますか? マージ中にコードが影響を受けたことがわからない場合、git はどのようにして各コードがどこから来たのかを追跡しますか? マージの競合中に誰かがそのコードをいじったことを私に伝えることができますか? 私は、マージ自体が責任を負うべきだと考えていました。