Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is split option missing in git add -p?

Tags:

git

git-add

Trying to split a hunk into smaller ones by git add -p and split option, but entire file appears as one hunk and I can't split it.

  1. I can edit, but removing lines causes the patch to fail.
  2. git help add says I should have split, and I recall using it, but in my current example the option doesn't appear in the prompt.
  3. When I choose the option help is printed, which says I can choose s to split :-[

Git version: 1.9.1. Xubuntu 14, oh-my-zsh. The hunk is not one line, it's multiple lines. Any ideas why would that be?

Edited with more data, here's console log:

+last line of long text  Stage this hunk [y,n,q,a,d,/,e,?]? s 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 hunk and all later hunks in the file d - do not stage this hunk nor any of the later 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 
like image 471
LAFK says Reinstate Monica Avatar asked Jun 25 '16 15:06

LAFK says Reinstate Monica


People also ask

What is split in git?

This can be used to split a commit into two: Start an interactive rebase with git rebase -i <commit>^ , where <commit> is the commit you want to split. In fact, any commit range will do, as long as it contains that commit. Mark the commit you want to split with the action "edit".


2 Answers

The reason it's not working is because your hunk is already as small as git will automatically get it. Split only works when there are non-changed lines separating changed lines close enough that git assumes they belong together.

In order to achieve what you want, you will need to manually edit the patch

like image 158
Jeff Puckett Avatar answered Oct 08 '22 02:10

Jeff Puckett


Why is split option missing in git add -p?

You won't have to ask this question with Git 2.17 (Q2 2018), since the single-key help is now given only for keys that are enabled (e.g. help for '/' won't be shown when there is only one hunk).

See commit 4bdd6e7, commit 88f6ffc, commit 01a6966 (13 Feb 2018) by Phillip Wood (phillipwood).
(Merged by Junio C Hamano -- gitster -- in commit 60f8b89, 06 Mar 2018)

First:

add -p: improve error messages

If the user presses a key that isn't currently active then explain why it isn't active rather than just listing all the keys. It already did this for some keys, this patch does the same for the those that weren't already handled.

And:

add -p: only display help for active keys

If the user presses a key that add -p wasn't expecting then it prints a list of key bindings.
Although the prompt only lists the active bindings the help was printed for all bindings.

Fix this by using the list of keys in the prompt to filter the help.
Note that the list of keys was already passed to help_patch_cmd() by the caller so there is no change needed to the call site.

like image 31
VonC Avatar answered Oct 08 '22 01:10

VonC