実際、すべて git diff
の はコミット ペア単位です。上記は のツリー/ファイルと のツリー/ファイルを比較していabc000
ますdef555
。たとえば、変更されたが、 との間にdef333
変更dir/file
がない場合(たとえば、 の変更が途中でキャンセルされた場合) 、そこにはまったく表示されない可能性があります。dir/file
abc000
def555
def333
dir/file
ただし、一般に、 で行われた変更は、 のバージョンと のバージョンを比較したときに表示される方法でdef333
変更されます。したがって、おそらくその変化が見られるでしょう。dir/file
abc000
def555
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はあなたが置き去りにしていることを警告します...これはまさにあなたが望んでいたものです.