git apply может применяться несколько раз, если строки не удалены

У меня есть следующий патч

diff --git a/.htaccess b/.htaccess
index 4298b10..aa3d50d 100644
--- a/.htaccess
+++ b/.htaccess
@@ -364,6 +364,15 @@
             Require all denied
         </IfVersion>
     </Files>
+    <Files patches>
+        <IfVersion < 2.4>
+            order allow,deny
+            deny from all
+        </IfVersion>
+        <IfVersion >= 2.4>
+            Require all denied
+        </IfVersion>
+    </Files>

 # For 404s and 403s that aren't handled by the application, show plain 404 response
 ErrorDocument 404 /pub/errors/404.php

Когда я использую git apply 2-й раз, патч не перестает применяться, вместо этого он просто добавляет его в той же строке. Есть ли способ предотвратить это?

Также, когда я использую git apply -R, он удалит один из добавленных экземпляров.

1 ответ

Короткий ответ - нет: git apply обрабатывает входящие изменения как патч и просто должен найти правильный контекст. Пока контекст продолжает совпадать - и в этом случае это происходит - патч продолжает применяться.

Это одна из причин, возможно, главная, чтобы избежать использования патчей. git cherry-pick имеет больше информации для него и не будет повторно применять изменения.

Другие вопросы по тегам