Окончания строк с cygwin и Github для Windows
Я хочу иметь возможность работать над своими проектами git, используя как приложение Github для Windows, так и git в командной строке с помощью Cygwin (на Windows).
Но у меня постоянно возникают проблемы с окончаниями линий, когда я переключаюсь с одного на другое.Если с помощью инструмента командной строки repo не имеет изменений, он захочет изменить все файлы с помощью приложения Github. Если я внесу изменения с помощью приложения Github, оно снова захочет изменить его с помощью инструмента командной строки.
После изрядного количества тестов я не смог заставить его работать для обоих инструментов.
Что заставит его работать? В.gitatributes я в настоящее время установил: * текст=авто Но это не помогает
3 ответа:
Это ошибка GHfW, которая возникает, когда конфигурация вашего репозитория и данные в вашем репозитории не согласуются.
Если вы настроили файл для перевода в конец строки CRLF-например, установив
core.autocrlf
вtrue
, но у вас в репозитории есть большие двоичные объекты, которые уже находятся в формате 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, и что РЕПО было проверено выход в Linux(чего на самом деле нет, согласно предыдущему шагу). Поэтому, когда git видит
CRLF
в Cygwin, он думает, чтоLF
модифицируется вCRLF
так, что git сообщает о множестве изменений файлов.Один из способов исправить это-создать файл
.gitattributes
в корневом каталоге РЕПО и добавьте следующие строки:*.txt text eol=lf
Он говорит git, когда встречает файл с суффиксом
.txt
, используяLF
оба, когда запись в " базу данных(.git)" и проверка в рабочем каталоге.
Я клонировал репозиторий (с файлами с CRLF) на моем windows, используя GitHub 2.7.0.24. Затем я хотел использовать мою версию git cygwin 2.1.4 на нем.
Я редактировал .git / config, добавив "autocrlf=true" под разделом [core]. (С реальной таблицей перед "autocrlf=true")
Теперь ГИТ cygwin говорит, что я в курсе без изменений.
Я сохраняю CRLF в файлах, потому что они были созданы таким образом в исходном репозитории.
Я не буду использовать GitHub применения больше нет...
Я заметил, что конфликты слияния добавляются >>> строки без CR, но они будут удалены, когда я разрешу конфликты.