Ручное редактирование блока очень мощно, но также и немного сложно, если вы никогда не делали этого раньше.
Самая важная вещь, которую нужно иметь в виду: разница всегда имеет один символ в дополнение к любому другому отступу.
Символ может быть либо:
- пробел (указывает на неизменную строку),
- a
-
, указывающий, что строка была удалена,
- или
+
, указывающий, что строка была добавлена.
Ничего другого. Это должен быть пробел, - или +. Что-нибудь еще, и вы получите ошибки
(для измененной строки нет символа, поскольку они обрабатываются путем удаления старой строки и добавления измененной строки как новой).
Поскольку вы открыли diff в своем любимом текстовом редакторе (вы сконфигурировали Git для использования вашего любимого текстового редактора, верно?), Вы можете делать все, что захотите - при условии, что полученный дифференциал будет корректно применяться. .
И в этом заключается хитрость. Если вы никогда не делали этого раньше, Git скажет вам: «Ваш отредактированный кусок не применяется. Редактировать снова?» так часто вы начнете ненавидеть себя за неспособность понять это , даже если это кажется таким простым (или Git, потому что он не может понять, чего вы хотите).
Одна вещь, которая часто приводила меня в замешательство, заключалась в том, что я забыл один отступ символа.
Я бы пометил строку с - для удаления, но в большинстве текстовых редакторов, которые вставляют -
, он не перезаписывает пространство, которое было там раньше. Это означает, что вы добавляете дополнительный пробел ко всей строке, что, в свою очередь, означает, что алгоритм сравнения не может найти / сопоставить строку в исходном файле, что, в свою очередь, означает, что Git будет кричать на вас .
Другое дело, что разница все еще имеет смысл. «Смысл» означает, что его можно наносить аккуратно. Точно то, как вы создаете разумную разницу, кажется немного темным искусством (по крайней мере, для меня сейчас), но вы всегда должны помнить, как выглядел оригинальный файл, а затем соответственно планировать свои -s и + s. Если вы будете редактировать свои фрагменты достаточно часто, вы в конечном итоге сможете их освоить.
Вместо подсчета строк Git хотел бы объединить перекрывающиеся фрагменты (когда они редактируются) перед применением указанного отредактированного блока.
Это было обсуждено в середине 2018 , и избегало бы сценария как: