Если вы хотите патч не удаляйте строку, вы должны заменить -
в начале строки пробелом. В вашем патче у вас есть неизмененная строка, которая остается там для контекста.
Заменить:
- (whatever here) "fubar" (whatever else here)
с
(whatever here) "fubar" (whatever else here)
(Обратите внимание, как текст в модифицированной линии по-прежнему совпадает с оригиналом, который подтверждает, что -
был заменен пробелом и не только удалены.)
Чтобы лучше понять исправления, посмотрите на этот пример:
diff --git a/test.txt b/test.txt
index 67179f2..9c17455 100644
--- a/test.txt
+++ b/test.txt
@@ -2,6 +2,8 @@ Line 1
Line 2
Line 3
Line 4
+Line 4.5
+Line 4.6
Line 5
Line 6
Line 7
@@ -10,8 +12,6 @@ Line 9
Line 10
Line 11
Line 12
-Line 13
-Line 14
Line 15
Line 16
Line 17
@@ -19,7 +19,7 @@ Line 18
Line 19
Line 20
Line 21
-Line 22
+Line 22 the cops
Line 23
Line 24
Line 25
Первые строки:
diff --git a/test.txt b/test.txt
index 67179f2..9c17455 100644
--- a/test.txt
+++ b/test.txt
говорят нам, что:
- заботы дифференциалов файл
test.txt
в версии мы маркировать a
, и тот же файл test.txt
в версии мы маркировать b
;
- файл в версии
a
хранится под хешем 67179f2
и файл в версии b
под хешем 9c17455
(это не хеширование хэшей, а хэш объектов, если я не ошибаюсь);
-
в терминальных линиях означает версию a
и +
означает версию b
.
Тогда мы имеем ломоть:
@@ -2,6 +2,8 @@ Line 1
Line 2
Line 3
Line 4
+Line 4.5
+Line 4.6
Line 5
Line 6
Line 7
-2,6
означает, что он представляет собой 6 строк в версии a
, начиная с линии 2;
+2,8
означает, что он представляет собой 8 линий в версии b
, начиная с линии 2.
Действительно, мы добавили две линии, Line 4.5
и Line 4.6
, которые мы можем видеть из +
линий:
+Line 4.5
+Line 4.6
Обратите внимание, как другие, немодифицированные строки, отображаемые для контекста, начинаются с пробела, обозначающего их как строки контекста.
Если вы хотите изменить свой патч, чтобы не добавлять Line 4.6
, вам необходимо удалить соответствующую строку +
. Но вы также должны исправить счетчик строк в ломоть, потому что вы только добавить одну строку, так что вы в конечном итоге с 7 строк, а не 8:
@@ -2,6 +2,7 @@ Line 1
Line 2
Line 3
Line 4
+Line 4.5
Line 5
Line 6
Line 7
В нашем втором ломоть:
@@ -10,8 +12,6 @@ Line 9
Line 10
Line 11
Line 12
-Line 13
-Line 14
Line 15
Line 16
Line 17
-10,8
означает, что он представляет 8 строк в версии a
, начиная с строки 10;
+12,6
означает, что он представляет собой 6 строк в версии b
, начиная с линии 12.
Это начинается в строке 12 из-за двух линий, добавленных в предыдущем ломоть. Обычно вам нужно настроить 12
на 11
, потому что теперь вы добавляете только одну строку в предыдущий кусок, но на практике вам не нужно, потому что контекстные строки помогают идентифицировать фактические строки, которые были изменены.
Теперь, если вы хотите не удалять строку 14, потому что вы только суеверны в отношении числа 13, вам необходимо сохранить строку 14, но как строку контекста, поскольку она все еще присутствует после применения патча. Таким образом, вы измените -
в пространстве, и исправить количество строк (вы в конечном итоге с 7 строк, а не 6):
@@ -10,8 +12,7 @@ Line 9
Line 10
Line 11
Line 12
-Line 13
Line 14
Line 15
Line 16
Line 17
Наконец, последний ломоть:
@@ -19,7 +19,7 @@ Line 18
Line 19
Line 20
Line 21
-Line 22
+Line 22 the cops
Line 23
Line 24
Line 25
Это меняющийся Line 22
в Line 22 the cops
, удалив старую строку и добавив измененную. Он начинается с строки 19 до и после, поскольку предыдущие ханки удаляли одинаковое количество строк, которые они добавили в общей сложности, и относятся к 7 линиям в обоих направлениях, поскольку он добавляет один и удаляет один.
Вы можете изменить изменения по-разному.Изменение содержания модифицированной линии:
@@ -19,7 +19,7 @@ Line 18
Line 19
Line 20
Line 21
-Line 22
+Line 22 THE COPS
Line 23
Line 24
Line 25
или добавить дополнительную строку:
@@ -19,7 +19,8 @@ Line 18
Line 19
Line 20
Line 21
-Line 22
+Line 22
+ the cops
Line 23
Line 24
Line 25
, которые можно упростить, так как она не изменяет строку 22: в малейшей
@@ -19,7 +19,8 @@ Line 18
Line 19
Line 20
Line 21
Line 22
+ the cops
Line 23
Line 24
Line 25
Что commad, вы печатаете? 'git apply'? можете ли вы вставить полную команду, которую вы вводите (и более полный файл исправлений, который вы пытаетесь применить)? Вы знакомы с командой 'git add -p' – Asenar
проклятый, слишком поздно для издания -_- А какое сообщение об ошибке у вас есть? – Asenar
Коррумпированный патч в строке xxx –