Подтвердить что ты не робот

Мой diff содержит конечные пробелы - как избавиться от него?

Я пробовал редактировать файл php в TextWrangler с окончанием строк, установленным в Unix, в NetBeans и в vim. Когда я сохраняю diff в патче, а затем пытаюсь применить его, он дает ошибки в пробелах. Когда я набираю git diff, я могу видеть ^M в концах моих строк, но если я вручную удалю их в vim, он говорит, что мой файл исправления поврежден, а затем патч не применяется вообще.

Я создаю патч со следующей командой:

git diff > patchname.patch

И я применяю его, проверяя чистую версию файла для исправления и ввода

git apply patchname.patch

Как я могу создать этот патч без ошибок пробела? Я уже создал патчи и никогда не сталкивался с этой проблемой.

4b9b3361

Ответ 1

Вы уверены, что это жесткие ошибки? По умолчанию git будет предупреждать об ошибках в виде пробелов, но все равно их примет. Если они жесткие ошибки, вы должны были изменить некоторые настройки. Вы можете использовать флаг --whitespace= для git apply, чтобы управлять этим в каждом вызове. Попробуйте

git apply --whitespace=warn patchname.patch

Это заставит поведение по умолчанию, которое необходимо предупредить, но принять. Вы также можете использовать --whitespace=nowarn для полного удаления предупреждений.

Конфигурационная переменная, которая управляет этим, apply.whitespace.


Для справки, ошибки пробела здесь не являются ошибками с вашим патчем. Это стиль кода, который git будет по умолчанию жаловаться при применении исправлений. Примечательно, что ему не нравятся конечные пробелы. Аналогично git diff будет выделяться пробельные ошибки (если вы выводите на терминал и цвет включен). Поведение по умолчанию - это предупредить, но принять патч в любом случае, потому что не каждый проект фанатичен в отношении пробелов.

Ответ 2

git apply --reject --whitespace = исправить mychanges.path

Ответ 3

Попробуйте patch -p1 < filename.patch