Так что я думаю, что это может быть связано с textmate, но мы работаем в небольшой команде, и у нас возникают некоторые проблемы с конфликтами полных файлов почти идентичных файлов в git, потому что к каждой строке одной ветви добавляется ^ M.
Что ^M
должен делать этот таинственный персонаж и откуда он может взяться?
Наши разработчики используют emacs для Windows / Mac, TextMate для Mac, coda для Mac и иногда текстовый редактор wp-admin.
У кого-нибудь когда-нибудь была эта проблема, вытекающая из одного из них?
Ответы:
В git-config установите
core.autocrlf
для того,true
чтобы git автоматически преобразовывал окончания строк для вашей платформы, например, запустите эту команду для глобальной настройки:источник
Кто-то неправильно преобразовывает свои символы конца строки .
Я предполагаю, что это люди Windows, поскольку они любят свой CRLF. Unix любит LF, а Mac любил CR до тех пор, пока ему не показали путь Unix.
источник
^M
есть0x0d
, то есть символ возврата каретки. Если ваш дисплей выглядиттогда файл должен быть получен из Windows, потому что стандартная последовательность новой строки в Windows - это
CR
LF
(0x0d 0x0a
), тогда как стандартная последовательность новой строки состоит исключительно изLF
Unices.Если файл пришел из системы Mac OS 9 или более ранней версии, вы увидите его как
потому что после возврата каретки не будет перевода строки.
источник
Чтобы ^ M исчез в git, введите:
Кредиты: https://lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/
источник
git diff
все равно учитывает ^ M при сравнении файлов. Удалить эту настройку с помощьюgit config --global --unset core.whitespace
(из этой темы ).--global
чтобы просто настроить текущий репо.Они связаны с различием между окончаниями линий в стиле DOS и стилем Unix. Проверьте статью в Википедии . Вы можете найти инструмент dos2unix, чтобы помочь, или просто написать небольшой скрипт, чтобы исправить их самостоятельно.
Изменить : я нашел следующий пример кода Python здесь :
источник
Я использую Android Studio (JetBrains IntelliJ IDEA ) в Mac OS, и моя проблема заключалась в том, что ^ M начало появляться в некоторых файлах в моем запросе на загрузку на GitHub . Для меня сработало изменение разделителя строк для файла.
Откройте нужный файл в редакторе идти к File идти к линии Сепараторы затем выбрать лучший вариант для вас (для меня это было LF - Unix и OS X (\ п) )
Согласно следующей статье, эта проблема является результатом запутанных окончаний строк между операционными системами: http://jonathonstaff.com/blog/issues-with-line-endings/
И дополнительную информацию вы можете найти здесь: https://www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48
источник
вместо query-replace вы также можете использовать Mx delete-trailing-whitespace
источник
Пот следующий в вашем
~/.emacs
(или eqiuvalent)и тогда вы сможете просто использовать
M-x dos2unix
.источник
^M
в конце строки в Emacs указывает возврат каретки (\ r), за которым следует перевод строки (\ n). Вы часто будете видеть это, если один человек редактирует файлы в Windows (где конец строки - комбинация символов возврата каретки и перевода строки), и вы редактируете в Unix или Linux (где конец строки - только символ новой строки).Сочетание символов обычно не вредно. Если вы используете систему контроля версий, возможно, вы сможете настроить формат регистрации текстового файла так, чтобы строки волшебным образом настраивались для вас. Кроме того, вы можете использовать триггеры checkin и checkout, которые автоматически «исправят» файлы за вас. Или вы можете просто использовать такой инструмент, как dos2unix, для ручной настройки.
источник
Как все уже упоминали. Это другой стиль окончания строки. MacOSX использует окончания строки Unix - то есть LF (перевод строки).
Windows использует как CR (возврат каретки), так и LF (перевод строки) в качестве окончания строки. Так как вы используете и Windows, и Mac, отсюда и проблема.
Если вы создадите файл в Windows, а затем перенесете его на Mac, вы можете увидеть эти символы ^ M в конце строк.
Если вы хотите удалить их, вы можете сделать это очень легко в Emacs. Просто выделите и скопируйте символ ^ M и выполните запрос-замену ^ M, и все готово.
РЕДАКТИРОВАТЬ: некоторые другие ссылки, которые могут быть полезны. http://xahlee.org/emacs/emacs_adv_tips.html
Этот поможет вам настроить Emacs для использования определенного типа стиля окончания строки. http://www.emacswiki.org/emacs/EndOfLineTips
источник
Я столкнулся с этой проблемой некоторое время назад. ^ M представляет возврат каретки, а поиск по
Ctrl-Q Ctrl-M
(создает литерал ^ M) позволит вам получить указатель на этот символ в Emacs. Я сделал что-то вроде этого:источник
Если в вашей системе не установлена утилита dos2unix, вы можете создать свою собственную, чтобы избавиться от конечных символов Windows:
со следующим содержанием
В вашем ~ / .bashrc добавьте строку:
применение
удалит символы ^ M в конце строк в файле file_from_PC.txt. Вы можете проверить, есть ли они у вас или нет, используя cat:
источник
Смотрите также:
Сокрытие ^ M в Emacs
Будьте осторожны, если вы решите удалить символы ^ M и повторно отправить свою команду. После этого они могут увидеть файл без возврата каретки.
источник
Решением для меня было использовать следующую функцию elisp, описанную в этой статье Emacs Wiki .
Выполните функцию
M-x dos2unix
в буфере и сохраните файл, все^M
исчезнет.источник