Как заставить git игнорировать изменения в случае?

Я не совсем уверен, что здесь происходит, но иногда конкретный файл в моем репозитории меняет регистр своего имени. например.,:

раньше: File.h

после: file.h

Мне все равно, почему это происходит, но это заставляет git думать, что это новый файл, а затем мне нужно вернуться и изменить имя файла. Можете ли вы просто заставить git игнорировать изменения регистра?

[редактировать] Я подозреваю, что Visual Studio делает что-то странное с этим конкретным файлом, потому что это чаще всего происходит, когда я открываю и сохраняю его после изменений. Однако у меня нет способа исправить ошибки в VS, но я надеюсь, что git должен быть немного более функциональным.

Re: Visual Studio сохраняет файлы в нижнем регистре Какую версию Visual Studio вы используете? Последний раз я проверял, что в версии 2008 года это было лучше. В 2005 году ошибка, казалось, возникала, когда файлы открывались через отладчик вместо проводника решений.

Adam Mitz 10.09.2008 10:43

На самом деле да, это 2005 год. Хотя никаких шансов на обновление пока нет.

1800 INFORMATION 10.09.2008 23:53
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
115
2
92 962
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Начиная с версии 1.5.6 есть опция ignorecase, доступная в разделе [core].git/config.

например добавить ignorecase = true

Чтобы изменить его только для одного репо, из этой папки запустите:

git config core.ignorecase true

Чтобы изменить его глобально:

git config --global core.ignorecase true

git config core.ignorecase true или git config --global core.ignorecase true для глобального применения.

Aaron Jensen 11.10.2008 02:33

@graywh: это задокументировано в git-config в core.ignorecase (kernel.org/pub/software/scm/git/docs/git-config.html)

Ben Lings 19.07.2010 17:06

Спасибо, я наконец понял, почему git не принимает во внимание изменения моего случая. ignorecase = false сделал свое дело, по умолчанию он был установлен на true -_-

Alex C 31.03.2016 17:36

Спасибо тебе за это!

Staffan Estberg 12.01.2021 15:49
Документация Git says: core.ignoreCase Internal variable which enables various workarounds to enable Git to work better on filesystems that are not case sensitive, like APFS, HFS+, FAT, NTFS, etc. For example, if a directory listing finds "makefile" when Git expects "Makefile", Git will assume it is really the same file, and continue to remember it as "Makefile". The default is false, except git-clone or git-init will probe and set core.ignoreCase true if appropriate when the repo is created.
Danijel 26.01.2021 11:59

В git версии 1.6.1.9 для Windows я обнаружил, что "ignorecase = true" в конфигурации уже было установлено по умолчанию.

Да, и когда вы работаете с файлами Java, вы хотите, чтобы для этого параметра было установлено значение false, иначе у вас могут возникнуть проблемы при выполнении такого рефакторинга (класс HTMLParser становится HtmlParser или наоборот).

PhiLho 30.11.2012 18:38

то же самое для git версии 2.10.1.windows.1

Kars Barendrecht 28.12.2016 16:22

Я знаю, что это устарело, но для Windows бессмысленно устанавливать для ignorecase значение false, поскольку Windows - операционная система без учета регистра. Это применимо независимо от того, работаете ли вы с Java или (ах!) C# или чем-то еще.

ingyhere 25.04.2018 20:50

Ситуация, описанная в вопросе, теперь повторяется с Mac OS X, git version> = 1.7.4 (я думаю). Лекарство состоит в том, чтобы вручную установить ignorecase = false и переименовать файлы в нижнем регистре (которые изменились таким образом git, а не Visual Studio) обратно в их UsualCase (т.е. 'mv myname MyName').

Подробнее здесь.

Вы можете заставить git переименовать файл только для регистра с помощью этой команды:

git mv --cached name.txt NAME.TXT

Обратите внимание, что это не меняет регистр файла в вашей извлеченной копии в разделе Windows, но git записывает изменение регистра, и вы можете зафиксировать это изменение. В будущих кассах будет использоваться новый кожух.

"ошибка: неизвестная опция` cached '. " Его также нет в документации: git-scm.com/docs/git-mv

Alex 20.06.2020 12:20

Чтобы заставить git распознавать изменение регистра в файле, вы можете запустить эту команду.

  1. Измените корпус файла, как вам нравится
  2. git mv -f mynewapp.sln MyNewApp.sln

Предыдущая команда теперь устарела.

  1. Из консоли: git config core.ignorecase true
  2. Изменить заглавные буквы в имени файла
  3. Совершить
  4. Из консоли: git config core.ignorecase false

Шаг 4: исправлены проблемы с проверкой веток с разными заглавными буквами.

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