Как заставить 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
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Можете ли вы объяснить разницу между ngOnInit и конструктором в Angular?
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
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: исправлены проблемы с проверкой веток с разными заглавными буквами.

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