Проблема с отладкой Git в Windows (MsysGit)

У меня периодически возникает проблема с git в Windows (я запускаю MSysGit из пакета Git-1.6.0.2-preview20080923.exe, я также пробовал с Git-1.5.6.1-preview20080701.exe, и результаты такие же ).

Бывает очень неприятно, что некоторые файлы отображаются как измененные, когда я их не менял, а в git-gui это показывает, что удаленный контент такой же, как добавленный контент (обычно это весь файл), то есть
- This line was here before
- This line was here before as well
- and this line too...
+ This line was here before
+ This line was here before as well
+ and this line too...

Я пробовал с git checkout -f и git reset --hard, но файлы остались прежними. Я также пытался удалить файлы до аппаратного сброса. Я попробовал поискать в Google, но не нашел ничего похожего. Не могли бы вы рассказать мне, как разобраться в этом, или какие шаги вы бы предприняли, чтобы подтвердить, что это проблема Git, а не моей системы, чтобы я мог сообщить об этом как об ошибке.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
966
3

Ответы 3

У вас могут возникнуть проблемы с окончанием строки, если вы не справились с этим ни в текстовом редакторе, ни в конфигурации Git.

Чтобы решить эту проблему в Git, установите параметр autocrlf в файле конфигурации Git:

$ git config --global core.autocrlf true

Это заставляет git преобразовывать символы новой строки в стандарт системы при извлечении файлов и в LF новые строки при фиксации. Затем вам нужно будет получить новую рабочую копию, которая отфильтрует окончания строк в соответствии с настройкой autocrlf.

$ git reset --hard HEAD
$ git commit -a

Это фиксирует любые файлы, которые были изменены путем стандартизации окончаний строк, поэтому теперь ваше репо согласовано, и вы не будете создавать больше проблем с окончанием строки.

Если вы используете Visual Studio, вероятно, Visual Studio преобразует табуляции в пробелы (# @% $ #). Вы можете отключить эту «функцию» где-нибудь в настройках Visual Studio. Вы также можете настроить git так, чтобы он не проверял изменения пробелов, но я не могу этого рекомендовать.

Приведенное выше предложение о настройке autocrlf может работать, но по умолчанию в используемой вами версии Git установлено значение true.

В VS2008 настройка преобразования вкладок в пробелы - Инструменты -> Параметры -> Текстовый редактор -> -> Вкладки, где вы выбираете переключатель в нижней части окна.

Другие вопросы по теме