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