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


106

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

перед: File.h

после: file.h

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

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


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

Вообще-то да, это 2005 год. Хотя никаких шансов на обновление пока нет.
1800 ИНФОРМАЦИЯ,

Ответы:


178

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

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

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

git config core.ignorecase true

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

git config --global core.ignorecase true

21
git config core.ignorecase true или git config --global core.ignorecase true, чтобы применить глобально.
Аарон Дженсен,

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

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

15

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

git mv --cached name.txt NAME.TXT

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


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

12

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


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

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

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

5

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

Больше информации здесь .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.