I usually add changes with git add -p
, and many times there are large hunks with several blocks of code, separated by blank lines.
However, git won't split
the hunk any further, and I have to resort to manual editing.
How can I increase the granularity of the hunks, such that every block of code will be in a separate hunk?
Edit: This is a different question from Git: show more context when using git add -i or git add -e?, since I'M not looking to increase the context around each hunk, but rather increase the number of hunks.
It cant be done,
These are the options you can do within add -p
:
y - stage this hunk
n - do not stage this hunk
q - quit, do not stage this hunk nor any of the remaining ones
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
Once you use the s
it will pick the chunk of code which can be considered as a standalone change. If you want to split it even more you will have to use the e
to edit the hunk and then add it back to the stage area.
To split hunks you use the s
flag.
If you need to split it into even smaller chunks you will need to manually edit it using the e
option.
As @codeWizard said in his answer, git just doesn't support what you want, and it hence can't be done in git add
.
Now, you could write a script yourself that does the following:
git checkout -- <changedfile>
to bring your modified file to an unmodified stateIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With