Jak zmienić nazwę pliku w git, który różni się tylko wielkością liter?

14

W moim projekcie git (Xcode) podałem nazwę pliku z niewłaściwą wielkością liter. Teraz poszedłem spróbować zmienić jego nazwę, ale kiedy się zgodzę, otrzymuję:

fatal: Nie doda aliasu pliku „MyProject / MyFile.h” („MyProject / MyFilE.h” już istnieje w indeksie)

Jestem pewien, że dzieje się tak, ponieważ git nie jest używany w systemie plików z zachowaniem wielkości liter i wielkości liter, takim jak HFS +. Ale jak sobie z tym poradzić?

Próbowałem zmienić nazwę obu plików na coś innego i zatwierdziłem to, a następnie zmieniłem nazwę z powrotem na to, czego chcę, ale nadal nie działa (z tym samym komunikatem o błędzie).

Rozpoznać
źródło

Odpowiedzi:

21

Zgodnie z pytaniem i odpowiedzią na Stackoverflow istnieje łatwiejszy sposób, który nie wymaga tworzenia nowego systemu plików w pliku obrazu dysku:

Przenieś istniejący plik na bok, zatwierdź ten ruch, a następnie przenieś go z powrotem w przypadku, który chcesz zachować i zatwierdzić. Gotowy.

Przykład:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
mspasov
źródło
w celu uniknięcia zepsucia linku zazwyczaj prosimy o skopiowanie odpowiednich części odpowiedzi za linkiem do treści odpowiedzi.
Ian C.
Dzięki @ ian-c. Miałem nadzieję, że ta reguła nie dotyczy łączy w rodzinie stosów wymiany.
mspasov
1
Tak, rozumiem, co mówisz, ale spójność jest miła.
Ian C.
Dziwne. Byłem pewien, że próbowałem tego, ale dziś to działa. Dzięki.
Ken
2

Nie znalazłem jeszcze sposobu, aby to naprawić bezpośrednio w systemie plików bez rozróżniania wielkości liter, potrzebujesz systemu plików z rozróżnianiem wielkości liter.

Na szczęście Mac OS X ma dobrą obsługę montowania dysków wirtualnych, dzięki czemu możesz szybko i łatwo uzyskać (zrobić) (tymczasowy) system plików uwzględniający wielkość liter na swoim komputerze.

Otwórz Narzędzie dyskowe, utwórz nowy obraz i ustaw pole „Format” na jedną z rozróżnianych wielkości liter wersji „Mac OS Extended”. Upewnij się także, czy jest wystarczająco duży dla swojego repozytorium.

Zamontuj nowy dysk, sprawdź na nim repozytorium git, upewnij się, że poprawnie nazwany plik ma prawidłową zawartość, i usuń drugi. Zatwierdź i wypuść zmiany, a następnie możesz odmontować obraz dysku i go usunąć.

Jeśli nie masz zdalnego serwera do klonowania (tzn. Po prostu uruchamiasz repozytorium git lokalnie na dysku twardym), pamiętaj, że możesz klonować bezpośrednio z innego repozytorium git na dysku twardym.

drfrogsplat
źródło
1
To okropnie pracochłonne. Możesz to zrobić bez konieczności rozpinania nowego systemu plików w pliku obrazu dysku.
Ian C.
1

Krok 1 : Po prostu zmień nazwę pliku na nazwę, która jest bardziej inna (niż tylko litery). Po prostu wybierz losową nazwę inną niż bieżąca nazwa i nazwę, którą chcesz nadać.

Krok 2 : Zatwierdź ten plik za pomocą GUI (Xcode) lub CLI (Terminal)

Krok 3 : zmień nazwę pliku tak, jak chcesz go zmienić. Tak więc teraz będzie więcej różnic niż tylko w przypadku poprzedniej nazwy.

Krok 4 : Zatwierdź plik o zmienionej nazwie ponownie.

Żadne magiczne sztuczki nie są potrzebne. Możesz wybrać opcję zatwierdzenia przez GUI lub CLI.

Bartel De Brabandere
źródło
0

Używam sourcetree. Bez użycia interfejsu CLI można to zrobić w prosty sposób. zmień nazwę pliku na inną nazwę (na przykład Index.php na Index_old.php), a następnie zatwierdź i naciśnij .. ponownie zmień nazwę na żądaną nazwę (index.php), a następnie zatwierdź i prześlij.

Hemantha
źródło