Why is split option missing in git add -p?

匆匆过客 提交于 2019-12-03 18:00:10

问题


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

回答1:


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




回答2:


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.



来源:https://stackoverflow.com/questions/38029869/why-is-split-option-missing-in-git-add-p

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!