実際、すべて git diffの はコミット ペア単位です。上記は のツリー/ファイルと のツリー/ファイルを比較していabc000ますdef555。たとえば、変更されたが、 との間にdef333変更dir/fileがない場合(たとえば、 の変更が途中でキャンセルされた場合) 、そこにはまったく表示されない可能性があります。dir/fileabc000def555def333dir/file
ただし、一般に、 で行われた変更は、 のバージョンと のバージョンを比較したときに表示される方法でdef333変更されます。したがって、おそらくその変化が見られるでしょう。dir/fileabc000def555
def555「元に戻した場合にどのように見えるか」を示す差分を取得する最も簡単な方法は、それdef333を行うことです。変更を元に戻した状態で (一時的なブランチに) ツリーを作成します。実際の名前付きブランチでそれを行うには、次のようにします。
git checkout def555 # by ID, so that you get a "detached HEAD"
git checkout -b temp-branch
git revert --no-edit def333
git diff [options] abc000
git checkout somebranch; git branch -D temp-branch
一時的なブランチが必要ない場合はどうしますか? まあ、それは些細なことです。作成しないでください。上記のように「切り離された HEAD」を取得し、上記のように元に戻してからgit checkout somebranch. 名前のないものを除いて、削除する一時的なブランチはありません.gitはあなたが置き去りにしていることを警告します...これはまさにあなたが望んでいたものです.