コードに多くの変更を加えたところ、code-result が予期せず破損していることがわかったとします。どの変更が結果を壊したかを見つけたいです。
バグのある変更がコミットに含まれている場合、その変更を見つける方法は明らかです。
しかし、それが別のコミットではなく、履歴の書き換え中に行われた場合、バグのある変更を見つける方法は?
数日前、次のような git history がありました。
commit00 ( contains no result.txt )
commit01 ( contains no result.txt )
...
commit10 ( contains version1 of result.txt )
commit11 ( contains version1 of result.txt )
...
commit20 ( contains version2 of result.txt )
results.txt のすべてのバージョンは問題ありませんでした。次に、次のように履歴を数回書き換えました。
<make changes>
git commit -m "changes to attach to commit0x"
git rebase -i commit0x
<use squash to attach changes to commit0x>
この方法でどの変更を行ったか覚えていません。しかし、commit10 または commit20 に移動すると、プログラムが異なる結果を返すことがわかりました (バージョン 1 とバージョン 2 の結果ではありません)。