У меня есть определенный патч под названием my_pcc_branch.patch.
Когда я пытаюсь применить его, я получаю следующее сообщение:
$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply
Что это значит?
Как я могу решить эту проблему?
Йоханнес Сикст из списка рассылки [email protected] предложил использовать следующие аргументы командной строки:
git apply --ignore-space-change --ignore-whitespace mychanges.patch
Это решило мою проблему.
git apply --reject --whitespace=fix mychanges.patch
сработал для меня.
Когда все остальное терпит неудачу, попробовать [ГИТ применить
'параметр s --3 исхода
] (https://git-scm.com/docs/git-apply#git-apply---3way).
в Git применить --3 исхода файл-заплатку.патч
--3 исхода когда патч не применяется, чисто, отходим на 3-путь слияния, если патч записывает идентификатор BLOB-объектов предполагается применить, и мы у этих объектов доступен локально, возможно оставляя конфликта маркеры в файлов в рабочем дереве для пользователя, чтобы решить. Это вариант подразумевает опцию --индекс, и является несовместимым с --отклонить и кэшированные варианты.
Типичный случай неисправности относится как патча, так как он может, и оставляет вас с конфликтов на работе в ГИТ, однако, вы обычно делаете так. Вероятно, один шаг проще, чем альтернатива "отклонить".
Эта команда будет применять патч не разрешить его оставить плохие файлы *.ПХВ
:
git apply --reject --whitespace=fix mypath.patch
Вы просто должны решить их. Однажды решил бежать:
git -am resolved
Это происходит, когда вы смешиваете UNIX и Windows git-клиенты, потому что Windows не имеет понятия "x" бит, поэтому ваша проверка файла rw-r--r--
(0644) под Windows "продвигается" уровнем msys POSIX как rwx-r-xr-x
(0755). git считает эту разницу в режиме практически такой же, как и текстовую разницу в файле, поэтому ваш патч не применяется напрямую. Я думаю, что ваш единственный хороший вариант здесь - установить core.filemode
в false
(используя git-config
).
Вот проблема msysgit с некоторой связанной информацией: http://code.google.com/p/msysgit/issues/detail?id=164 (перенаправлено на archive.org's 3 Dec 2013 copy)
Попробуйте использовать решение, предложенное здесь: https://www.drupal.org/node/1129120
патч -Р1 < пример.патч`
Это помогло мне .
В моем случае я был достаточно глуп, чтобы создать файл исправления неправильно, в первую очередь, на самом деле дифф-ное в ту сторону. Я в конечном итоге с точно таким же сообщения об ошибках.
Если вы'вновь на Мастер и филиал-имя `ГИТ дифф > филиал-имя.патч этот пытается удалить все дополнения, которые вы хотите, чтобы произошло и наоборот (что было невозможно для Git, чтобы сделать, поскольку, очевидно, никогда не делал, дополнений не может быть удален).
Поэтому убедитесь, что вы ходите на свою ветку и выполнить команду git дифф мастер > филиал-имя.патч`
Я нашел этой ссылке
Я понятия не имею, почему это работает, но я пробовал многие способы работы и это единственное, что работал для меня. Короче, выполните три команды ниже:
git fsck --full
git reflog expire --expire=now --all
git gc --prune=now