I created a replacement for the perl git-add--interactive that adds a few enhancements:
- S to automatically split all hunks
- G to set a global filter on hunks to show
- A to automatically accept all hunks (after auto-splitting and global filter are applied)
Then I discovered Vim fugitive. It allows to go through the diff and stage chunks so intuitively, it changed the way I work. Just j/k to move around, = to expand file, s to stage selection, c to commit. The process of reviewing changes became very natural and actually enjoyable. I like the feeling of control it gives and how it makes focused commits painless while not disrupting the flow.