tig and add interactive
Tig is a textual GUI for git which lets you manipulate your git repo like GitX or SourceTree but without leaving your terminal.
In particular, you can “graphically” do git add --interactive.
I find it easier to do my chunk surgery when I only want to apply parts of a file change.
The documentation is a bit terse so let me give you a rundown.

Navigate diffs
launch tig
s # to see the status view
arrows or j/k # to select the file diff to look at
enter # to see changes in that file, this is the stage view, alternatively hit c
j/k # to navigate up and down the file lines
Select specific chunks
(go down to a specific chunk)
u # to select the whole chunk
! # to delete/reset the whole chunk change (you must be on the chunk header line) ; caution this change will be gone forever
Select specific lines
(in a chunk on a specific line)
1 (one) to add the specific line to stage
! and then y to delete/reset the specific line ; caution this line will be gone forever
To undo the staging and remove the line, select the file in the changes to be committed section
1 (one) to move the line back to the non-stage area
Other goodies
Shift+R to refresh the diff changes in case you update the file in your editor and want a updated diff
You can delete/reset changes to a whole file by hitting ! and then y in the status view.
Make sure to select the right file as the changes will be gone forever.
Comments