Ever since I learned Git, I've used it in all my development projects. Even on solo projects, I like to commit to Git, as it's such an ingrained part of my workflow.
I generally prefer using Git from the terminal rather than a GUI. I feel it gives me more control, since Git was built for the terminal. However, one thing annoyed me about Git's terminal experience: staging individual files. git-add has an interactive mode that aims to alleviate this, but I found its interface clunky. I looked around for alternatives, but those I found either did too much or had other problems. Thus, I decided to create gadd: a small command-line utility for staging files to Git.
I wanted to program more in Rust after using it for Advent of Code, and found it suitable for a terminal application like this. To interact with Git, I used Rust bindings for libgit2. This taught me a lot about how Git works under the hood — as is often the case, it is more complex than it looks on the surface!
Now I use gadd almost daily, and quite enjoy it. There's something extra satisfying about creating your own tool and tailoring it exactly to your needs.