The SCM du jour, which replaced Mercurial for me, and with a number of followers largely due to the massive amount of projects managed with it (and GitHub’s rise in popularity).
Resources
| Date | Platform | Link | Notes |
|---|---|---|---|
| 2026 | prek | A Rust-based, dependency-free reimagining of pre-commit with drop-in compatibility | |
| Worktrunk | A CLI for git worktree management with hooks and automation tuned for parallel agentic workflows | ||
| Server | walgit | Git server backed by object storage | |
| 2025 | git-crypt | A tool for transparent encryption of files in a git repository | |
| Soft Serve | A self-hosted Git server with a text interface, written in Go | ||
| 2023 | git-secret | A tool to store your private data inside a git repository | |
| OneDev | A possible GitLab replacement for on-prem setups | ||
| Mac | GitUp | A nice Mac GUI with undo and history editing features | |
| 2018 | lazygit | nice terminal-based wrapper | |
| 2014 | Gitblit | A Java based solution. | |
| Gitlist | A PHP front-end | ||
| Gitfs | A FUSE filesystem that keeps track of changes | ||
| Gogs | A self-hosting Go solution, pretty neat. | ||
| 2013 | libgit2 | A linkable library for git | |
| gittle | A high-level Python implementation based on Dulwich | ||
| klaus | A Python-based repository browser | ||
| 2012 | git-extras | A set of extensions for team work. | |
| 2011 | Mac | GitX | Another fork with even more features |
| gitx | A fork of the traditional GitX with a number of new features | ||
| 2010 | Mac | Gitbox | Free for up to three repos. |
| gitnub | RubyCocoa, plays nice with github, requires some tweaking. | ||
| GitMac | Also in beta. No remarkable features. | ||
| GitX | The classic. | ||
| Gity | Simple and straightforward UI. | ||
| Gitti | In beta. Seems to have a decent revision graph. | ||
| Multiple | Dulwich | a pure Python implementation | |
| SparkleShare | Wants to be Dropbox as well |
Notes
Dealing with line endings
Use git config –global core.autocrlf input to have git convert files to LF ending when committing (essential if you are dealing with legacy codebases).