Я не совсем уверен, что здесь происходит, но иногда конкретный файл в моем репозитории меняет регистр своего имени. например.,:
раньше: File.h
после: file.h
Мне все равно, почему это происходит, но это заставляет git думать, что это новый файл, а затем мне нужно вернуться и изменить имя файла. Можете ли вы просто заставить git игнорировать изменения регистра?
[редактировать] Я подозреваю, что Visual Studio делает что-то странное с этим конкретным файлом, потому что это чаще всего происходит, когда я открываю и сохраняю его после изменений. Однако у меня нет способа исправить ошибки в VS, но я надеюсь, что git должен быть немного более функциональным.
На самом деле да, это 2005 год. Хотя никаких шансов на обновление пока нет.
Начиная с версии 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 для глобального применения.
@graywh: это задокументировано в git-config в core.ignorecase (kernel.org/pub/software/scm/git/docs/git-config.html)
Спасибо, я наконец понял, почему git не принимает во внимание изменения моего случая. ignorecase = false
сделал свое дело, по умолчанию он был установлен на true
-_-
Спасибо тебе за это!
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.
В git версии 1.6.1.9 для Windows я обнаружил, что "ignorecase = true" в конфигурации уже было установлено по умолчанию.
Да, и когда вы работаете с файлами Java, вы хотите, чтобы для этого параметра было установлено значение false, иначе у вас могут возникнуть проблемы при выполнении такого рефакторинга (класс HTMLParser становится HtmlParser или наоборот).
то же самое для git версии 2.10.1.windows.1
Я знаю, что это устарело, но для Windows бессмысленно устанавливать для ignorecase значение false, поскольку Windows - операционная система без учета регистра. Это применимо независимо от того, работаете ли вы с Java или (ах!) C# или чем-то еще.
Ситуация, описанная в вопросе, теперь повторяется с 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
Чтобы заставить git распознавать изменение регистра в файле, вы можете запустить эту команду.
git mv -f mynewapp.sln MyNewApp.sln
Предыдущая команда теперь устарела.
Шаг 4: исправлены проблемы с проверкой веток с разными заглавными буквами.
Re: Visual Studio сохраняет файлы в нижнем регистре Какую версию Visual Studio вы используете? Последний раз я проверял, что в версии 2008 года это было лучше. В 2005 году ошибка, казалось, возникала, когда файлы открывались через отладчик вместо проводника решений.