I highly recommend using Tower. Yes, it’s a paid app with a yearly subscription fee, but it’s worth it. I really enjoy using the rebase functionality to reword, split, and reorder commits.
I also know how to do this on the command line, but sometimes I enjoy using a gui on macOS.
Can you specify which of the features in the table from the article it provides? If so, I can update the article. The last time I used Tower, I was not impressed, for the same reasons as the other Git UI tools in the table which try to offer simar features.
I would say that while Tower can't achieve the specific features to the specifications defined in the article (as I understand them), its main advantage is how stable, predictable, and at-home it feels on macOS, which cannot be said of /any/ of the other GUI clients (where applicable, on macOS). It's responsive, commands finish as expected, and I can also perform many operations with a drag and drop or via the context menu. This predictability lends a lot of confidence to me achieving my work, and I feel others feel the same.
As for the features, it:
- supports `undo` of arbitrary operations quite well.
- has a dedicated `reword` (as "edit commit message") command/flow (but will ask if you want to stash your current working copy, with the option to automatically re-apply the stash)
- `split` kind of works by entering a "edit a commit" flow, which lets you stage and commit multiple times. In short, editing a single commit can generate one or more commits.
- `large-ops` and `large-load`: I've never noticed the GUI becoming unresponsive, but it's possible none of the repos I've checked out are large enough.
Note: Tower on Windows feels out place on Windows/ doesn't work as well as on Mac, but is still a formidable git GUI.
Thank you for mentioning Tower! I would just like to add that Tower 9 also included many improvements around the merge/rebase experience, including an Instant Conflict Detection that should satisfy the "preview" workflow mentioned.
I also know how to do this on the command line, but sometimes I enjoy using a gui on macOS.