How can I view the output of `git show` in a diff viewer like meld, kdiff3, etc

diff, dvcs, git, version-control

Solution

You can use `git difftool` to show a single commit.

Say you want to see the commit with the sha1 `abc123`:

git difftool abc123~1 abc123

(`~1` tells git to move to the previous commit, so `abc123~1` is the commit before `abc123`)

If you use this regularly, you could make a custom git command to make it easier:

Create a file called `git-showtool` somewhere on your `$PATH` with the following contents:

git difftool $1~1 $1

Give that file execute permissions:

chmod +x ~/path/to/git-showtool

Use the command `git showtool <sha1 or tag or ...>`

- Profit.

Problem

There are many SO questions that show how to view the output of a `git diff` command in a diff viewer like meld using `git difftool` or otherwise. I am not asking about `git diff` though. I want to see the output of `git show <previous commit sha1>` in a diff viewer like meld. How can I do this?

Original source