Разрыв строки изменен в некоторых файлах с помощью EGit


Я использую Eclipse Juno с EGit 2.0 и у меня есть следующая проблема:

Я только что клонировал довольно большой проект с помощью EGit, я не редактировал ни одного файла, и у меня есть несколько файлов для фиксации. Если я проверю состояние репозитория с помощью git status , я увижу эти файлы как нестагнированные модификации.

Если я делаю Compare With -> HEAD Revision в eclipse для любого из этих файлов, я не вижу никакой разницы. Однако, когда я делаю git diff, я вижу такие вещи:

diff --git a/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp b/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp
index f883dba..811ad83 100644
--- a/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp
+++ b/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp
@@ -34,7 +34,7 @@
                                    </c:forEach>
                            </select>
                    </c:if>
-                       <div><a href="reprintLastReceipt"><fmt:message key="label.link" /></a></div>
+                       <div><a href="reprintLastReceipt"><fmt:message key="label.link" /></a></div>^M
            </fieldset>
            <div class="widgetBut">
                    <a class="btn primary submit" href="#"><span><fmt:message key="button.reprint" /></span></a>

Это не повлияло на конкретный тип файла, с которым у меня проблема .ява, .JSP-страница, .стиль CSS, .свойства и .XML-файл.

Почему я получил эти изменения в разрывах строк только в некоторых файлах? Как мне это исправить?

Заранее спасибо!

2 3

2 ответа:

Начиная с EGit 2.0, согласно ошибке 301775, EGit поддерживает core.autocrlf.

Он использовал, чтобы установить autocrlf в false при создании РЕПО, Но ошибка 382067 и исправление 6316 позаботились об этом, что означает, что он полагается на локальные или глобальные настройки, которые у вас есть в локальной установке Git (например, msysgit).
И, как я уже говорил, это всегда должно быть установлено в false .

Если вам нужен мелкозернистый контроль над EOL некоторых файлов, используйте core.eol атрибут .

Вроде бы старый вопрос, но все же у кого-то может быть проблема (как и у меня).

Документация EGit > руководство пользователя EGit > начало работы , которое можно найти здесь состояния:

Указание на общесистемную конфигурацию

Если вы используете Git для Windows в качестве компаньона к EGit, убедитесь, что EGit знает, где установлен Git, чтобы он мог найти "общесистемные настройки", например, как ядро.автократия установлена. Перейдите в настройки и посмотрите в разделе команда>Git>конфигурация а затем на вкладке Системные настройки.

Если вы выбрали один из вариантов использования Git из командной строки при установке Git для Windows, то расположение системных настроек заполняется путем, и все в порядке. Если нет, используйте кнопку Обзор, чтобы найти, где установлен Git, например C:\Program файлы (x86)\Git.

Этот совет также применим к пользователям других упаковок Git, например Git under Cygwin или TortoiseGit.

Пользователи, не являющиеся пользователями Windows теоретически следует проверить эту настройку, но общесистемные настройки обычно не используются на платформах, отличных от Windows.

Итак, как мы видим, EGit ищет конфигурационные файлы git, чтобы узнать, как именно настроен "autocrlf". Но под окнами, кажется, он не находит их всех.

Эта команда покажет нам, что использует config git:

Git config --list --show-origin

И какие конфигурации git учитываются в Eclipse мы можем увидеть в Windows > Предпочтения > Команда > Git > Конфигурация . Вот проблема: Eclipse не видит конфигурационный файл, расположенный в C:\ProgramData\Git папка, в которой определена опция 'autocrlf'.

Я закончил тем, что продублировал значение' autocrlf ' (true-в моем случае)

[ядро]

Autocrlf = true

In user '.файл gitconfig ' находится в домашней директории и все работает нормально.

Смотрите также git в Windows - расположение конфигурационных файлов.