Is there a graphical git commit application to show diffs and set a commit message?

As part of my work I regularly commit to git. I have a fabric script that does an interactive commit: git commit -a which shows me which files have changed in nano and then lets me write a commit message.

The problem with this flow is sometimes I need to know what changes I've made inside a file. I was doing a ton of stuff at 3am this morning and I can't for the life of me remember what I was doing. I have to manually git diff to see the changes.

Is there a graphical application that can help me out here? It still needs to be scripted from fabric but in a perfect world it would be a textbox, a list of changed files and a meld-like window showing diffs based on the file I selected. Does such a glorious thing exist?


I normally just use git gui. It shows the list staged and unstaged changed files, and shows their diffs, and lets you selectively stage hunks, add a log message, and commit. Even has a nice knob to amend the last commit instead.


The git-gui package has a citool extension for git that seems to have this sole goal in mind.

sudo apt-get install git-gui
# make some changes in your branch
git citool

It is as ugly as sin in KDE though and there's no schmancy meld-diff. So I'll keep looking.