Окончания строк с 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, он думает, чтоLFis изменен на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, но они будут удалены, когда я разрешу конфликты.