28143


異なるコミットリビジョンの同一ファイルは、DIFFできることを知っているのですが、  
renameなどでファイルパスが変わったコミットとその前のコミットで、  
ファイルのDIFFをする方法はありますか？


CC BY-SA 3.0
2016-08-09T01:32:29.600
28139
2016-08-09T04:15:29.790
13625
question
git
gitで異なるコミットリビジョンの異なるファイルをDIFFするには？


ファイル名を指定することで差分を取得できます。

例:

[code]

    git diff HEAD\~2:moe.txt HEAD:moemoe.txt
    
[/code]


CC BY-SA 3.0
2016-08-09T01:42:40.810
28140
2016-08-09T01:42:40.810
76
28139
answer


[Git2.9](https://github.com/git/git/blob/master/Documentation/RelNotes/2.9.0.txt#L33-L34)よりリネーム検知がデフォルトで有効になりました。

[The GitHub Blog](https://github.com/blog/2188-git-2-9-has-been-released) より:

> Rename detection is now enabled by default for diffs.[中略]  
>  Git infers on the fly when a file has been renamed by looking for
> similarities between the contents of the old and new files.

従って最近のバージョンであれば `git diff HEAD~2` のような実行で所望の結果になっていると思います。

特定のファイルの差分が知りたい場合には、依然としてリネーム前のファイル名も指定する必要がありそうです。  
`git diff HEAD~2 HEAD -- moe.txt moemoe.txt`

* * *

古いバージョンでは `git diff -M HEAD~2` のように `-M` オプションが必要です。

[GIT-DIFF(1)](https://git-scm.com/docs/git-diff):

> -M[<n>], --find-renames[=<n>]  
>  Detect renames. If n is specified, it is a threshold on the similarity
> index [後略]


CC BY-SA 3.0
2016-08-09T04:03:39.463
28143
2016-08-09T04:15:29.790
2016-08-09T04:15:29.790
2808
2808
28139
answer