How do I diff the same file between two different commits on the same branch?
If you have configured the "difftool" you can use
git difftool revision_1:file_1 revision_2:file_2
Example: Comparing a file from its last commit to its previous commit on the same branch: Assuming that if you are in your project root folder
$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java
You should have the following entries in your ~/.gitconfig or in project/.git/config file. Install the p4merge.
[merge]
tool = p4merge
keepBackup = false
[diff]
tool = p4merge
keepBackup = false
[difftool "p4merge"]
path = C:/Program Files (x86)/Perforce/p4merge.exe
[mergetool]
keepBackup = false
[difftool]
keepBackup = false
[mergetool "p4merge"]
path = C:/Program Files (x86)/Perforce/p4merge.exe
cmd = p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
Note: If you are using Intellij Enterprise or Community Edition - It has a good tool for doing 3 way merge when doing a merging/rebasing
For simple diff you can right click->Git->Compare with revision
Select the revision you are interested in
Intellij will show the diff.
You can also compare two different files in two different revisions, like this:
git diff <revision_1>:<file_1> <revision_2>:<file_2>
Check $ git log
, copy the SHA-1 ID of the two different commits, and run the git diff
command with those IDs. for example:
$ git diff (sha-id-one) (sha-id-two)
From the git-diff
manpage:
git diff [--options] <commit> <commit> [--] [<path>...]
For instance, to see the difference for a file "main.c" between now and two commits back, here are three equivalent commands:
$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c