Ошибка 'git apply' с кодом 1: конечный пробел в SourceTree

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

Пару дней назад я получил фрагмент кода от программиста, работающего в Windows, который вызвал некоторые проблемы с окончанием строки. Если я правильно помню, я установил core.autocrlf на true, что устранило проблемы с файлом Windows. Однако с этого момента у меня возникли серьезные проблемы с другим репо, над которым я работаю. Если я хочу обработать только часть файла в SourceTree, я получаю массовую ошибку git apply' failed with code 1: [/a/long/path/here] trailing whitespace in SourceTree. Так что я решил, что мне нужно вернуть core.autocrlf к тому, что было, что я "принял" за ("мать всего ... и т. Д.") false (я никогда раньше не связывал core.autocrlf). Поэтому я установил его на false, что внезапно делает все файлы, в которых я изменяю, только одну букву, чтобы помечать как изменившие ВСЕ строки в файле, что, очевидно, является серьезной проблемой при проверке кода.

Я поискал и нашел несколько примеров решения здесь, на SO, но все они используют добавление дополнительных параметров to git add и делать всякие странные вещи. Меня больше всего интересовало то, что я не думаю, что могу вставлять пользовательские команды в графический интерфейс SourceTree; Как все стало так запутанно? И самое главное, не могу ли я просто вернуться к тому, как это было (что бы это ни было), вместо того, чтобы каждый раз вводить дополнительную команду, которую я хочу выполнить и зафиксировать?

Пожалуйста, обрати внимание; Командную строку я не боюсь, я работаю в ней практически целый день. Но мне просто нравится делать обзоры кода в графическом интерфейсе, таком как SourceTree.

Любой совет, который поможет мне вернуть все в норму, очень мне поможет!


person kramer65    schedule 10.09.2015    source источник


Ответы (3)


Установите «Игнорировать пробелы». Смотрите скриншот:

введите описание изображения здесь

person Lee Richardson    schedule 13.02.2018
comment
Я бы предпочел просто добавить это как комментарий к ответу @ Mykola, но похоже, что вы не можете добавлять изображения в комментарии :(. - person Lee Richardson; 13.02.2018
comment
У меня была проблема с OP, но я уже установил для Sourcetree настройки diff на игнорирование пробелов. Переключение для отображения пробелов устранило проблему для меня. - person lauren.marietta; 15.06.2021

Существует обсуждение этой проблемы в сообществе Atlassian. Исправление состоит в том, чтобы переключить настройку Show Whitespace на Ignore Whitespace.

person Mykola    schedule 05.02.2018

В ваш ~ / .gitconfig попробуйте добавить следующий раздел:

[apply]
    whitespace = nowarn

Полная информация о том, что это делает, описана на https://git-scm.com/docs/git-apply

Параметры для apply.whitespace (со страницы git-scm):

  • "nowarn" отключает предупреждение о конечных пробелах.
  • «warn» выводит предупреждения для нескольких таких ошибок, но применяет исправление как есть (по умолчанию).
  • "fix" выводит предупреждения для нескольких таких ошибок и применяет патч после их исправления.
  • error выводит предупреждения о нескольких таких ошибках и отказывается применять исправление.
  • «error-all» похож на error, но показывает все ошибки.

Похоже, что значение по умолчанию для SourceTree под OS X - «ошибка», по крайней мере, с git 2.6.4. Или он может взаимодействовать с нашим значением по умолчанию core.autocrlf = true

person tgharold    schedule 04.01.2016