2016-02-19 4 views
3

Я работаю в IntelliJ 15.0.3 и с помощью Git via Git Bash (для фиксации и нажатия изменений). Когда файл fetch из удаленного репозитория git содержит разные разделители строк (смешанный режим или как он называется). Я имею в виду, что некоторые строки заканчиваются CRLF, а некоторые строки заканчиваются LF (тот же файл).Проблема с разделителем строк Git и IntelliJ

Когда я вношу изменения в IDEA - файл автоматически сохраняется, и все разделители строк уменьшены (изменены) до разделителя строк по умолчанию IDEA (LF для меня).

И мерзавец рассматривает эти изменения как изменения в файл, в результате я совершающие файл с большим количеством изменений, как эти:

- some line 
+ some line 

Поскольку some line [CRLF] было изменено на some line [LF].

Как настроить Git игнорировать это или как настроить IntelliJ IDEA оставить файл в этом режиме микширования? Я не хочу фиксировать изменения, когда изменений нет.

+0

При установке GIT есть возможность сказать «checkout as-is, commit as-is», который может вам помочь? – VinayVeluri

ответ

3

При установке git у нас будет возможность установить checkout as-is and commit as-is.

Если это не установлено, мы можем сделать с git config.

Эта команда помогает вам в этом.

git config --global core.autocrlf true 

Согласно документации:

Git can handle this by auto-converting CRLF line endings into LF when you 
add a file to the index, and vice versa when it checks out code onto your 
filesystem. You can turn on this functionality with the core.autocrlf setting. 
If you’re on a Windows machine, set it to true – this converts LF endings into 
+0

Подробнее: https://stackoverflow.com/questions/9976986/force-lf-eol-in-git-repo-and-working-copy – Vadzim

-1

В моем случае проблема в том, что некоторые файлы были push редактор с различными разделителями линии - один файл может содержать CRLF, а также LF, и для этих файлов есть не было способов изменить что-то, не имея проблемы, описанной выше.

IntelliJ имеет предварительно сконфигурированный разделитель строк, и каждый раз, когда я делал какие-либо незначительные изменения в файле, все разделители строк были изменены на IntelliJ configs, что означает, что git обрабатывал некоторые строки как измененные, даже если на самом деле изменений не было.

Моим решением было переключиться на Eclipse (просто не хотелось иметь дело с этим), и Eclipse не изменит его, поэтому после редактирования в Eclipse git отображаются только изменения, которые я делаю.

0

Делегаты IDEA меняют разрешение на git.

Таким образом, вам необходимо либо force desired line breaks in IDEA, либо to force desired line breaks in git.

В моем случае autocrlf true уже присутствовал на моем ПК, но рабочая копия была первоначально скопирована из доли колледжа, где она была проверена с другой настройкой.

Чистая проверка разрешит проблему, но у меня были некоторые файлы, которые уже были изменены и вы хотели их сохранить. Это можно обойти, сбросив индекс git для whole project или просто желаемый subdirectory.

Смежные вопросы