Software Review: Lazygit
Recently, while browsing one of the few tech newsletters I follow, I came across a tool called lazygit, a terminal-based UI for Git.

As someone who occasionally uses tig for quickly browsing commits or stashes, I decided to give lazygit a try to see how it stacks up. For the most part, I rely on the Git command line, having spent a significant amount of time mastering its arcane commands, but I’m always on the lookout for tools that could speed things up.
After refreshing my Go installation on my aging Ubuntu 22.04 machine (Lazygit requires Go 1.22+), I installed the software by running go install. With that, I was ready to put it to the test on one of my repositories.
First Impressions:
- Vim Keybindings: Lazygit uses vim-style navigation! Switching between different panels is done with
HandL, while moving between lines is handled byJandK. This could feel awkward for those not accustomed to Vim, but for Vim users, it’s intuitive. - Fast and Responsive: The UI feels snappy and responsive, which is always a good sign for a tool like this.
- Exiting Mistakes: I accidentally quit the program a few times by pressing
qwhen I was just trying to access the help screen (which is available by pressing?). A minor annoyance, but something to get used to.
To get a better feel for its features, I watched this video, which showcases some of Lazygit’s functionality. Here are the features that stood out to me for my day-to-day work:
Top Features I Found Useful:
- Stage Individual Lines from the Same Hunk: This is a game-changer for interactive rebasing or partial file additions. Doing this with plain Git is painful — I always need to pause and remember how to manually edit the patch file. With Lazygit, it’s simple: select the lines you want with
V, then confirm with Space. - Amend Old Commit Messages: While it’s possible to amend commit messages with a regular interactive rebase, it can be tedious. Lazygit simplifies this. Just hit
ron a commit, and you can edit the message on the fly. I often find myself needing to add ticket references or polish commit messages for reviewers, so this feature is a time-saver. - Automatic Stash/Unstash When Changing Branches: No more worrying about manually stashing or unstashing when switching branches. Lazygit handles this seamlessly.
- Interactive Rebase: I’m already comfortable using Git’s interactive rebase, but Lazygit’s interface may streamline the process further. I’m keen to explore this more.
- Rebase on a New Branch: This eliminates the need to mess around with the
--ontooption in Git, making rebasing much easier.
Beyond these, Lazygit also offers advanced features like bisection, worktree management, editing old commits, and cherry-picking, among others. It’s more than just a basic Git browser — there’s some serious functionality packed into this UI!
What’s Next?
In the coming days, I plan to use Lazygit for all my Git operations to see how it holds up in real-world scenarios. If it proves to be efficient, it might become a permanent part of my workflow.
By Thomas Martin
Follow me or comment