Окончания строк с cygwin и Github для Windows
Я хочу иметь возможность работать над моими проектами git, используя как приложение Github для Windows, так и git в командной строке с помощью Cygwin (в Windows).
но я продолжаю получать проблемы с окончаниями строк, когда я переключаюсь с одного на другой.
Если с помощью инструмента командной строки РЕПО не имеет изменений, он захочет изменить все файлы с помощью приложения Github. Если я сделаю изменения с помощью приложения Github, он снова захочет изменить его с помощью инструмент командной строки.
после изрядного количества испытаний я не мог заставить его работать для обоих инструментов.
Что заставит его работать? В.gitatributes я в настоящее время установил: * текст=авто Но это не помогает!--1-->
3 ответов
это ошибка GHfW, которая возникает, когда ваша конфигурация репозитория и данные в вашем репозитории не согласны.
Если вы настраиваете файл для перевода в окончание строки CRLF-установив core.autocrlf
до true
, например, но у вас есть blobs в вашем репозитории, которые уже находятся в формате CRLF (вероятно, потому, что кто-то не установил core.autocrlf
значение true), то эта проблема может произойти.
В этом случае GHfW переводит CRLFs в репозитории иначе, чем msysgit. В результате, некоторые или все файлы оказались грязными.
Я бы рекомендовал последовательный подход к CRLF в вашей команде, чтобы избежать любой двусмысленности инструментов git относительно того, что они должны делать с вашими окончаниями строк. Тем не менее, эта ошибка была недавно исправлена в libgit2, библиотеке, которая лежит в основе GHfW, и должна скоро попасть в GHfW.
работа над Git Bash и Cygwin в Windows заставит git запутаться. То есть:
- клонирование / проверка РЕПО под Git Bash. Во время проверки git думает, что это на Windows, поэтому обычно он использует
CRLF
для проверки текстовых файлов. - запустите git в Cygwin, git думает, что это на Linux, и что РЕПО было проверено
out в Linux (что на самом деле не так, согласно предыдущему шагу). Поэтому, когда git видит
CRLF
в Cygwin, он думает, чтоLF
is изменен наCRLF
Так что git сообщает много изменений файлов.
один из способов исправить это-создать .gitattributes
файл в корне РЕПО и
добавьте следующие строки:
*.txt text eol=lf
это сказать git, когда сталкиваются файл с суффиксом .txt
, используя LF
как когда
записи в базы данных" (.git) " и проверка в рабочем каталоге.
я клонировал репозиторий (с файлами с CRLF) в своей windows с помощью GitHub 2.7.0.24. Затем я хотел использовать на нем версию cygwin git версии 2.1.4.
я редактировал .git / config, добавив "autocrlf=true" в разделе [core]. (С реальной таблицей перед "autocrlf=true")
теперь git cygwin говорит, что я в курсе без изменений.
Я сохраняю CRLF в файлах, потому что они были созданы таким образом в исходном репозитории.
Я больше не используйте приложение GitHub...
Я заметил, что конфликты слияния добавляются >>> строки без CR, но они будут удалены, когда я разрешу конфликты.