Comment by chriswarbo
5 hours ago
Magit allows selective staging/unstaging, either of hunks, or by selecting lines (AKA Emacs's "region"). I avoid staging from the git commandline, unless I'm just doing whole files.
PS: Majutsu provides this too (a magit-like tool for jj)
The per-line staging in magit is a frequent tool I use. I can be in the middle of bunch of other changes, change 1 line for a different reason that would otherwise be "mid-hunk", and the stage & commit it with its own explanation.
It releases me from having to have the "discipline" to stay 100% focused on the broader task at hand and say "hmm, I should fix that while I'm here", without co-mingling purposefully different commits.
Truly fantastic. Absurdly, I have no idea how to do this on the command line, though presumably it is possible from there too (just a lot, lot less convenient).
git add -p or git add ‹file› -p
Nope. That doesn't offer per-line .. or does it ?
1 reply →
VSCode also allows staging/unstaging specific hunks by hovering over the hunk near the left/right separator in diff view - super handy when I need it!
Git gui does per-line staging, and comes with git…
Neogit, Magit inspired, does the same for Neovim. Would recommend!
I think you can do the same with tig and lazyvim. Sometimes you just need interactivity.