Rozróżnianie wielkości liter w Git

84

Mam problem z git. Zasadniczo ustawiłem na fałsz, core.ignorecaseponieważ chciałem zmienić wielkość liter w nazwach niektórych folderów (ponieważ pracuję pod OSX z systemem plików niewrażliwym na wielkość liter, zmiany nie zostały pokazane inaczej). Kiedy wyciągnąłem swoje dane, zauważyłem, że teraz każdy folder o zmienionej nazwie pojawia się w repozytorium dwukrotnie, ze starą i nową nazwą. Nie wiem, co zrobić, aby usunąć stare foldery, ponieważ nie pojawiają się one lokalnie (próbuję ponownie ustawić wartość core.ignorecasetrue, ale to nie pomaga).

entropid
źródło
1
Może mógłbyś stworzyć system plików ext3 na obrazie, zamontować go i wyciągnąć w tym systemie plików uwzględniającym wielkość liter.
André Puel
@ AndréPuel cóż, właściwie szukałem czegoś „łatwiejszego”. : P ale dzięki za radę, pójdę na to, jeśli nie znajdę innych rozwiązań.
entropid

Odpowiedzi:

126

Może pomóc obejście podobne do tego komentarza w przypadku problemu z msysgit (w przypadku innego systemu operacyjnego bez rozróżniania wielkości liter: Windows)?

Napotkałem ten sam problem. Ponownie zmieniono nazwę pakietu w Eclipse i przełączenie do poprzedniej kompilacji nie powiodło się, ponieważ nazwa folderu nie została przywrócona. Używam systemu Windows 7, Git 1.7.0.2.msysgit.0

W systemie Windows nazwa mojego folderu została zmieniona na „ folder”, ale Folderw Git był wyświetlany jako „ ”.
Rozwiązałem problem, zmieniając jego nazwę na „ Folder” w systemie Windows, a następnie uruchamiając:

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

Zauważ, że od wersji git 2.0.1 (czerwiec 2014), git mv Folder folderpowinno po prostu działać!

Zobacz „ Git: zmiana wielkości liter w nazwach plików

VonC
źródło
1
Zauważyłem, że podczas zmiany nazwy w ten sposób druga zmiana nazwy może zająć dłuuuugi czas. Odpowiedzią jest cierpliwość; folder ostatecznie zmieni nazwę, a następnie możesz go zatwierdzić.
NathanAldenSr
Innym sposobem uzyskania tego samego jest zmiana nazwy „Folder” na „Folder2” i wykonanie zatwierdzenia, a następnie „Folder2” na „folder” i poprawienie ostatniego zatwierdzenia.
DaniCE
@DaniCE Właśnie zredagowałem odpowiedź: z git 2.0.1 powinno to być znacznie prostsze.
VonC
22

Użyj następującego polecenia w systemie macOS. Spowoduje to zmianę konfiguracji git, aby w nazwach plików rozróżniać wielkość liter.

git config core.ignorecase false

Możesz ustawić to globalnie, edytując ~/.gitconfigi ustawiając to pod coretakimi jak:

[core]
    ignoreCase = false
Brandon Yang
źródło
Zrobiłem dokładnie odwrotnie, aby git odniósł sukces, wykonując rebase, który obejmował zmianę nazwy przypadku. Dzięki!
sorin
21

Możesz utworzyć obraz dysku (najlepiej obraz dysku sparsebundle) z systemem plików uwzględniającym wielkość liter i pobrać tam repozytorium git.

Poniższy zrzut ekranu Narzędzia dyskowego pokazuje, jak utworzyć obraz dysku z rozróżnianiem wielkości liter.

Ustawienia narzędzia dyskowego

adib
źródło
Znacznie lepsze, trwałe rozwiązanie tego problemu i innych tajemnic wynikających z rozróżniania wielkości liter. Zrobiłem obraz dysku; skopiowałem do niego moje stare repozytoria Git; utworzyłem symboliczne łącze z miejsca, w którym trzymałem wszystkie moje repozytoria git do nowej, rzadkiej wersji pakietu. Wróć do normalnego przepływu pracy, aby nigdy więcej tego nie spotkać.
jwd630
Utworzony w ten sposób dysk działa bardzo wolno.
Minqi Pan
1
@MinqiPan, miałem ten sam problem, ale nie powinno tak być, jeśli utworzysz wolumin APFS. Woluminy APFS mogą znajdować się na tej samej partycji „kontenera” , nie powodując tym samym spadku wydajności.
Victor Sergienko
12

Mac OS X domyślnie „nie rozróżnia wielkości liter, ale zachowuje wielkość liter”. To ważne rozróżnienie.

Proponuję utworzyć inny obraz dysku, a konkretnie sformatować go jako „HFS z rozróżnianiem wielkości liter”.

Arafangion
źródło
Dziękuję za wskazówkę, ale powyższy post rozwiązał wszystko!
entropid
7
Niestety wiele złego oprogramowania (oczywiście Adobe) opiera się na domyślnym, uszkodzonym systemie plików OSX. Uważać.
Jim Stewart,
5
git mv "Folder" "Folder2"
git mv "Folder2" "folder"
git commit -a -m "my message"
Mohamed EL HABIB
źródło
Tak. Musisz iść naprzód i to też zrobić. ++
RubberDuck,