2009-11-24 25 views
143

Istnieje kilka plików w naszej bazie kodu sterowanej git, które chciałbym zmienić. W szczególności chcę tylko zmienić wielkość pliku, aby na przykład sourceCode.java stała się SourceCode.java. Połów: Jestem na pudełku Windows, a system plików myśli, że to ta sama nazwa pliku.Zmiana wielkości pliku w systemie Windows?

Jak mogę sprawić, że Windows i Git rozpoznają tę zmianę i ją sprawdzą?

+3

Ponieważ Git 2.0.1+ (czerwiec 2014), prosty 'git mv' powinien działać (http://stackoverflow.com/a/24979063/6309). Nawet w systemie Windows. – VonC

+9

Dobra droga, zamykając to pytanie jako duplikat jednoznacznie innego pytania ... –

+0

Nie duplikat. – worc

Odpowiedz

235

Zobacz tutaj po więcej wskazówek, jak to zrobić:

How to make git ignore changes in case?

czyli

git mv -f name.java Name.java 
+7

Odkładając to na bok, to nie działa na systemie plików FAT. Nosimy kod projektu na pendrive'ie, a zmiany w przypadku są prawdziwym bólem. – asm

+0

To nie działa dla mnie w systemie NTFS i systemie Windows 10 – Roboblob

34

Jeśli jesteś na systemie plików FAT jedynym wyborem jest zrobić rename dwuetapowy:

  1. Zmień nazwę sourceCode.java do anything.you.like
  2. Rename anything.you.like do SourceCode.java

w czasach kiedy używaliśmy Perforce, mieliśmy dokładnie ten problem i to było jedyne rozwiązanie, jakie mogliśmy wymyślić.

+4

Tylko uwaga dla innych: Nie jest konieczne zatwierdzanie pośrednie, ale konieczne jest dodanie do indeksu dla git, aby zauważyć zmianę – arberg

17

następujące kroki pozwoliły mi zmienić wielkość liter w systemie Windows:

  • Dodaj ignorecase = false do [core] w .git/config;
  • Przenieś pliki, które zamierzają zmienić nazwę, z katalogu projektu;
  • Dodaj usunięcia do indeksu;
  • Przenieś wszystkie pliki z powrotem do ich pierwotnej lokalizacji i zmień wielkość liter plików i/lub katalogów;
  • Dodaj wszystkie "nowe" pliki do indeksu;
  • Usunąć ignorecase = false dodane w pierwszym kroku.

W ten sposób masz pojedyncze zatwierdzenie, które zawiera zmianę nazwy i ułatwia zmianę, np. cały katalog.

+2

Zrób to dla ustawień globalnych i lokalnych kąpieli: $ gti config --global core.ignorecase false $ gti config core.ignorecase false –

+0

To jest jedyne podejście, które działało dla mnie. Dzięki! – Roboblob

4

Należy zachować ostrożność. Może to doprowadzić do zmian, których nie da się scalić. Git jest zdezorientowany podczas łączenia w systemie Windows, ponieważ nie może zdecydować, czy stara wielka nazwa i nowa mała nazwa są tym samym plikiem, czy nie (dla Git nie są, ale dla systemu plików, które są). Aby scalić, musisz wykonać ręczne obejście, takie jak usuwanie plików przed scaleniem.

Zobacz Git rebase issue with files of same name but different case

Nie jestem pewien, czy ten problem jest gorszy niż o pliku niekonwencjonalnie nazwie w projekcie na wieki wieków, ale warto wiedzieć o tym, czy istnieje wiele użytkowników z dużą ilością gałęzie, które ostatecznie zostaną połączone.

Powiązane problemy