(Это более длинный комментарий, требующий форматирования, чем ответ. См. Ответ EncryptedWatermelon для прямого ответа.)
Параметр «split» только для git add -p
обрабатывает случай, когда блок diff имеет два слитых подмены: например,
@@ ...
context
+new1
context
context
+new2
context
может быть разделен, но:
@@ ...
context
+new1
+new2
context
не может быть разделен: это одно изменение, а недва изменения, контексты которых примыкали (или перекрывались) и, следовательно, были объединены в один блок.
Чтобы git add -p
применил такой патч, вы должны превратить патч в инструкции для добавления (и / или удаления) толькоопределенные строки в патче. Как говорится в мета-инструкциях, это включает удаление (или комментирование) добавленных строк, которые вы не хотите добавлять в конце концов, и замену знака минуса на строках, которые вы не хотитехочу удалить. То есть:
@@ ...
context-above
+new1
-old
+new2
context-below
должно стать:
@@ ...
context-above
+new1
old
context-below
Результатом, как вы можете увидеть, прочитав его, будет набор инструкций, которые говорят: В исходном файленайдите строки, читающие context-above
, затем old
, затем context-below
в качестве контекста. В этом регионе вставьте новую строку new1
.
В некоторых последних версиях Git возникают проблемы с правильными инструкциями по исправлению в git add -p
. Если вы нажмете эти конкретные версии Git, ваши варианты - понизить Git до версии, в которой нет ошибки, обновить Git до версии, в которой исправлена ошибка, или - мой личный фаворит - не заморачиваться с этим глупым "взломом«патч для создания нового патча»: просто скопируйте файл за пределы VCS.
Система контроля версий представляет собой набор инструментов. Если ни один из его молотков и пил не поможет решить вашу проблему, то нет причин использовать отвертку как зубило. Просто перенесите файл на другой рабочий стол, где есть удобная головоломка или маршрутизатор, облегчающий работу, и используйте его.