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!"
Я попытался решить проблему, и в 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
,
Я использовал следующий подход:
- Создать новую папку
temp
- Скопируйте весь контент из
Tests
вtemp
- удалять
Tests
- выполнять
git rm Tests -r
- переименовывать
temp
вtests