git: патч не применяется

У меня есть определенный патч под названием 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

Что это значит?

Как я могу решить эту проблему?

Комментарии к вопросу (3)
Решение

Йоханнес Сикст из списка рассылки msysgit@googlegroups.com предложил использовать следующие аргументы командной строки:

git apply --ignore-space-change --ignore-whitespace mychanges.patch

Это решило мою проблему.

Комментарии (9)

git apply --reject --whitespace=fix mychanges.patch сработал для меня.

Комментарии (8)

Когда все остальное терпит неудачу, попробовать [ГИТ применить'параметр s --3 исхода] (https://git-scm.com/docs/git-apply#git-apply---3way).

в Git применить --3 исхода файл-заплатку.патч

--3 исхода когда патч не применяется, чисто, отходим на 3-путь слияния, если патч записывает идентификатор BLOB-объектов предполагается применить, и мы у этих объектов доступен локально, возможно оставляя конфликта маркеры в файлов в рабочем дереве для пользователя, чтобы решить. Это вариант подразумевает опцию --индекс, и является несовместимым с --отклонить и кэшированные варианты.

Типичный случай неисправности относится как патча, так как он может, и оставляет вас с конфликтов на работе в ГИТ, однако, вы обычно делаете так. Вероятно, один шаг проще, чем альтернатива "отклонить".

Комментарии (4)

Эта команда будет применять патч не разрешить его оставить плохие файлы *.ПХВ:

git apply --reject --whitespace=fix mypath.patch

Вы просто должны решить их. Однажды решил бежать:

git -am resolved
Комментарии (5)

Это происходит, когда вы смешиваете 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)

Комментарии (3)

Попробуйте использовать решение, предложенное здесь: https://www.drupal.org/node/1129120

патч -Р1 < пример.патч`

Это помогло мне .

Комментарии (1)

В моем случае я был достаточно глуп, чтобы создать файл исправления неправильно, в первую очередь, на самом деле дифф-ное в ту сторону. Я в конечном итоге с точно таким же сообщения об ошибках.

Если вы'вновь на Мастер и филиал-имя `ГИТ дифф > филиал-имя.патч этот пытается удалить все дополнения, которые вы хотите, чтобы произошло и наоборот (что было невозможно для Git, чтобы сделать, поскольку, очевидно, никогда не делал, дополнений не может быть удален).

Поэтому убедитесь, что вы ходите на свою ветку и выполнить команду git дифф мастер > филиал-имя.патч`

Комментарии (0)

Я нашел этой ссылке

Я понятия не имею, почему это работает, но я пробовал многие способы работы и это единственное, что работал для меня. Короче, выполните три команды ниже:

git fsck --full
git reflog expire --expire=now --all
git gc --prune=now
Комментарии (0)