Почему в git add -p отсутствует опция разделения?

Пытаюсь разделить кусок на более мелкие с помощью опций git add -p и split, но весь файл отображается как один кусок, и я не могу его разделить.

  1. Я могу редактировать, но удаление строк приводит к сбою патча.
  2. git help add говорит, что я должен был разделить, и я помню, что использовал его, но в моем текущем примере этот параметр не отображается в приглашении.
  3. Когда я выбираю опцию, печатается справка, в которой говорится, что я могу выбрать s для разделения :-[

Версия Git: 1.9.1. Xubuntu 14, о боже мой. Фрагмент - это не одна строка, это несколько строк. Любые идеи, почему это должно быть?

Отредактировано с дополнительными данными, вот журнал консоли:

+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

person LAFK says Reinstate Monica    schedule 25.06.2016    source источник
comment
Я считаю, что вам нужно сначала войти в интерактивный режим (-i), чтобы использовать разделение.   -  person Lee Duhem    schedule 25.06.2016
comment
Сразу же попробовал, но, к сожалению, тот же эффект. IIRC git add -p просто обходит исходное окно для выбора параметров и сразу переходит к исправлению. Документы говорят то же самое (сейчас проверено). Тем не менее спасибо.   -  person LAFK says Reinstate Monica    schedule 25.06.2016
comment
Это будет проще с Git 2.17 (Q2 2018), который будет отображать более точное справочное сообщение. См. мой ответ ниже.   -  person VonC    schedule 11.03.2018


Ответы (2)


Причина, по которой это не работает, заключается в том, что ваш кусок уже настолько мал, что git автоматически его получит. Split работает только тогда, когда есть неизмененные строки, разделяющие измененные строки достаточно близко, чтобы git предположил, что они принадлежат друг другу.

Чтобы добиться того, что вы хотите, вам нужно будет отредактировать патч вручную

person Jeff Puckett    schedule 25.06.2016
comment
Ааа! Действительно, неизмененные линии, отделяющие измененные. В этом случае я просто разделю контент без git и добавлю его частями. /мне спасибо! - person LAFK says Reinstate Monica; 25.06.2016

Почему параметр разделения отсутствует в git add -p?

Вам не придется задавать этот вопрос в Git 2.17 (второй квартал 2018 г.), так как справка по одному ключу теперь предоставляется только для включенных ключей (например, справка для '/' не будет показано, когда есть только один кусок).

См. коммит 4bdd6e7, коммит 88f6ffc, (13 февраля 2018 г.), автор Филлип Вуд (phillipwood).
( Объединено Junio ​​C Hamano -- gitster -- в commit 60f8b89, 6 марта 2018 г.)

Первый:

add -p: улучшить сообщения об ошибках

Если пользователь нажимает клавишу, которая в данный момент не активна, объясните, почему она не активна, а не просто перечислите все клавиши. Он уже сделал это для некоторых ключей, этот патч делает то же самое для тех, которые еще не были обработаны.

И:

add -p: отображать справку только для активных клавиш

Если пользователь нажимает клавишу, которую add -p не ожидал, он печатает список привязок клавиш.
Хотя в приглашении перечислены только активные привязки, справка была напечатана для всех привязок.

Исправьте это, используя список ключей в подсказке для фильтрации справки.
Обратите внимание, что список ключей уже был передан help_patch_cmd() вызывающим абонентом, поэтому в сайте вызова нет необходимости вносить изменения.

person VonC    schedule 10.03.2018
comment
Проголосовал! Я оставлю принятым как есть, потому что я верю, что прямо сейчас больше людей выиграют от этого. Тем не менее, спасибо @VonC! - person LAFK says Reinstate Monica; 12.03.2018
comment
@LIttleAncientForestKami Я согласен: принятый ответ по-прежнему правильный. - person VonC; 12.03.2018