Окончания строк с cygwin и Github для Windows


Я хочу иметь возможность работать над своими проектами git, используя как приложение Github для Windows, так и git в командной строке с помощью Cygwin (на Windows).

Но у меня постоянно возникают проблемы с окончаниями линий, когда я переключаюсь с одного на другое.

Если с помощью инструмента командной строки repo не имеет изменений, он захочет изменить все файлы с помощью приложения Github. Если я внесу изменения с помощью приложения Github, оно снова захочет изменить его с помощью инструмента командной строки.

После изрядного количества тестов я не смог заставить его работать для обоих инструментов.

Что заставит его работать? В.gitatributes я в настоящее время установил: * текст=авто Но это не помогает

3 9

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