Git не чувствителен к регистру? - PullRequest
84 голосов
/ 13 декабря 2011

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

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

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

Что я сделал не так?

Ответы [ 5 ]

97 голосов
/ 13 декабря 2011

Это будет зависеть от значения конфигурации 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 при создании хранилища.

67 голосов
/ 13 декабря 2011

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

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 и только изменение регистра каталога * 1008.*

22 голосов
/ 12 февраля 2014

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

git mv Electronics electronics -f
git commit -m "That was easy!"
20 голосов
/ 07 июля 2014
git config --system core.ignorecase false
0 голосов
/ 29 ноября 2018

В моем сценарии у меня было две папки tests и Tests, которые отображались как две отдельные папки в Github, но как одна папка Tests в Windows. Моей целью было объединить их обоих в tests.

Я использовал следующий подход:

  1. Создать новую папку temp
  2. Копирование всего содержимого из Tests в temp
  3. Удалить Tests
  4. выполнить git rm Tests -r
  5. Переименовать temp в tests
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...