Чутливість до регістру в Git


84

Я зіткнувся з проблемою з git. В основному я встановив значення false, core.ignorecaseтому що хотів змінити регістр імен деяких папок (оскільки я перебуваю під OSX з нечутливою до регістру файловою системою, зміни не відображалися інакше). Коли я витягнув свої дані, я помітив, що тепер кожна перейменована папка двічі відображається у сховищі, як із старою, так і з новою назвою. Я не знаю, що робити, щоб видалити старі папки, оскільки вони не відображаються локально (я намагаюся знову встановити core.ignorecaseзначення true, але це не допомагає).


1
Можливо, ви можете створити файлову систему ext3 над зображенням, змонтувати її та витягнути в цій файловій системі, чутливі до регістру.
André Puel

@ AndréPuel ну, насправді я шукав щось «простіше». : P, але дякую за пораду, я піду на це, якщо не знайду інших рішень.
ентропід

Відповіді:


126

Може допомогти такий спосіб вирішення, подібний до цього коментаря, у проблемі msysgit (для іншої ОС, що не враховує регістр: Windows)?

Я зіткнувся з цією ж проблемою. Перероблено ім’я пакета в Eclipse і перехід до попередньої збірки зламано через те, що назва папки не повертається. Я використовую Windows 7, Git 1.7.0.2.msysgit.0

Мою папку було перейменовано в Windows на " folder", але Folderв Git відображалося як " ".
Я виправив проблему, перейменувавши її на " Folder" в Windows, а потім запустивши:

git mv "Folder" "Folder2"
git mv "Folder2" "folder"

Зверніть увагу, що починаючи з git 2.0.1 (червень 2014), він git mv Folder folderповинен просто працювати!

Див. " Git: Зміна великих літер імен файлів "


1
Я помітив , що при перейменуванні таким чином, друге перейменування може зайняти looooong час. Відповідь - бути терплячим; папка з часом перейменовується, тоді ви можете зробити це.
NathanAldenSr

Ще один спосіб отримати те саме - перейменувати "Папку" у "Папка2" і зробити коміт, а потім "Папку2" у "папку" та внести зміни до останнього коміту.
DaniCE

@DaniCE Я щойно відредагував відповідь: з git 2.0.1 це має бути набагато простіше.
VonC

22

Використовуйте таку команду на macOS. Це змінить вашу конфігурацію git, щоб вона враховувала регістр імен файлів.

git config core.ignorecase false

Ви можете встановити це в усьому світі, відредагувавши ~/.gitconfigта встановивши під coreтакими параметрами, як:

[core]
    ignoreCase = false

Я зробив якраз навпаки, щоб зробити git успішним, зробивши перебазу, що включала перейменування справи. Дякую!
сорін

21

Ви можете створити образ диска (бажано образ диска sparsebundle) із чутливою до регістру файловою системою та перевірити там своє сховище git.

На скріншоті Disk Utility нижче показано, як створити образ диска з урахуванням регістру.

Налаштування утиліти диска


Набагато краще, постійне рішення цієї проблеми та інших таємниць, спричинених чутливістю до регістру. Я зробив образ диска; скопіював в нього мої старі репозиторії Git; зробив символічне посилання з того місця, де я раніше зберігав усі свої git-репо до нової, розрідженої версії пакета. Повернутися до звичайного робочого процесу, щоб більше ніколи не стикатися з цим.
jwd630

Створений таким чином диск дуже дуже повільний.
Minqi Pan

1
@MinqiPan, у мене було те саме занепокоєння, але це не повинно бути, якщо ви створюєте том APFS. Томи APFS можуть існувати в тому ж розділі "контейнер" , таким чином, не вимагаючи покарання продуктивності.
Віктор Сергієнко

12

Mac OS X за замовчуванням "не враховує регістр, але зберігає регістр". Це важлива відмінність.

Я пропоную вам створити інший образ диска та спеціально відформатувати його як "З урахуванням регістру HFS".


Дякуємо за підказку, але пост над цим все вирішив!
ентропід

7
На жаль, багато поганого програмного забезпечення (звичайно, Adobe) покладається на пошкоджену файлову систему OSX за замовчуванням. Будьте обережні.
Джим Стюарт,


1

На дискусійному форумі git@vger.kernel.org під назвою Помилка є довга недавня тема про питання чутливості до регістру . Не вдається виконати перевірку Git із помилковим повідомленням про помилку, яке висвітлює проблеми та речі, які слід спробувати, з урахуванням регістру між різними платформами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.