Является ли git не чувствительным к регистру?

В первом обязательстве моего частичного имени _Electronics оно было написано с прописными буквами, а затем я изменил его на _Electronics.

Git под cygwin игнорировал случай после ввода нового имени, поэтому я изменил имя вручную в целевом репо.

Теперь он иногда меняет частичный _Electronics на _Electronics.

Что я сделал неправильно?

Ответ 1

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

mv file.txt temp.txt
git add -A
git commit -m "renaming..."
mv temp.txt File.txt
git add -A
git commit --amend -m "Renamed file.txt to File.txt"

Это явный способ внесения изменений, совершающих их, затем свертывания коммитов. Более короткий способ сделать это - манипулировать индексом и рабочей папкой все в одном:

git mv file.txt temp.txt
git mv temp.txt File.txt
git commit -m "Renamed file.txt to File.txt"

Это также связано с настройкой имен каталогов: git mv и только изменить регистр каталога

Ответ 2

Он будет зависеть от значения конфигурации core.ignorecase, для которого установлено значение false в чувствительных к регистру файловых системах и true в msysgit в Windows.

core.ignorecase

Если значение true, этот параметр позволяет использовать различные способы обхода, чтобы git работал лучше в файловых системах, которые не чувствительны к регистру, например FAT. Для Например, если список каталогов находит "makefile", когда git ожидает "Makefile", git будет считать, что это действительно тот же файл, и продолжить чтобы запомнить его как "Makefile".

По умолчанию используется значение false, кроме git -clone (1) или git -init (1) будет проверять и задавать значение core.ignorecase true, если это необходимо, когда репозиторий.

Ответ 3

Это намного проще:

git mv Electronics electronics -f
git commit -m "That was easy!"

Ответ 4

git config --system core.ignorecase false