Git не чувствителен к регистру?

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

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

Теперь это иногда меняет совершенное _electronics частично к _Electronics,

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

5 ответов

Решение

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

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

Это будет зависеть от 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, если это необходимо, при создании хранилища.

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

git mv Electronics electronics -f
git commit -m "That was easy!"
git config --system core.ignorecase false

Я попытался решить проблему, и в Windows10 все прошло успешно.

Предположим, что в битбакете TEST и test есть две папки, но когда я клонирую репо на диске, он создает только TEST, и я хочу сохранить тест как одну папку на git, которая содержит все файлы.

Мне нужно будет выполнить следующие команды в командной строке git mv TESTtest1 -f git mv text1 test -f git commit -m "renaming..." git push

Теперь вы увидите, что иерархия папок в битбакете исправлена.

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

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

  1. Создать новую папку temp
  2. Скопируйте весь контент из Tests в temp
  3. удалять Tests
  4. выполнять git rm Tests -r
  5. переименовывать temp в tests
Другие вопросы по тегам