Need help with GitViz?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

238 Stars 45 Forks 76 Commits 5 Opened issues


Real-time, presentation-quality, Git visualizer to help with Git training

Services available


Need anything else?

Contributors list


Psst, hey... are you looking for a .NET Core 3 version? Check out the

branch. Contributions and PRs on that branch are very welcome!

Type commands. See their effect in real time. Perfect rendering for presentations.

Among the many things we do at Readify to help people build better software, we teach people about Git.

For newbies, the concept of commit graphs, references, branches and merges can be a bit hard to visualize.

Instead of trying to do all this on slides, or in sync on a whiteboard, we wanted to be able to run real commands and see a presentation quality diagram in real-time. This tool does that.

We also intelligently render unreachable commits to help people understand hard resets and rebases.

Screenshot animation

Where do I get it?

Pre-built binaries are available at

Release Quality

Alpha. This entire project so far consists of one Readify guy sitting down the back of a training course and tapping away for a few hours, no more.

What is 'presentation quality'?

Large. Clear. Projector-optimized and tested colors. Just enough information to be useful.

What this tool does NOT do

This is not a day-to-day visualizing tool for big, active repositories. It's optimised for repositories with less than 20 commits, for very specific training scenarios in live presentations.

How it works

Shells out to

, and then renders it with the excellent GraphSharp.


How can I remove dangling commits?

GitViz shows dangling commits to make it easier to visualise rebases and other history rewrites. To remove those commits to clean things up run (this will delete all unreachable objects in the repo, be careful):

git reflog expire --expire-unreachable=now --all
git gc --prune=now

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.