Próbuję zmienić nazwę pliku, aby miał inną wielkość liter niż wcześniej:
git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js
Jak widać, Git rzuca na to wyzwanie. Próbowałem też zmienić nazwę, używając tylko zwykłego starego mv
polecenia, ale Git nie wybiera nazwy (jako zmiany nazwy lub nowego pliku bez śledzenia).
Jak mogę zmienić plik, aby miał inną wielkość liter o tej samej nazwie? Korzystam z systemu Mac OS X 10.7.3 (Lion) z Git 1.7.9.1, używając powłoki Z (zsh) 4.3.15.
git
rename
case-sensitive
file-rename
knpwrs
źródło
źródło
git mv myfile foo; git mv foo MyFile
git mv hello.txt Hello.txt
będzie działać na systemie operacyjnym bez rozróżniania wielkości liter. Zobacz moją odpowiedź poniżejOdpowiedzi:
Począwszy od Git 2.0.1 (25 czerwca 2014 r.), Po
git mv
prostu będzie działać na systemie operacyjnym bez rozróżniania wielkości liter .Zobacz commit baa37bf autorstwa Davida Turnera (
dturner-tw
) .mv
: zezwól na zmianę nazwy, aby naprawić wielkość liter w systemach plików bez rozróżniania wielkości literBłąd „
git mv hello.txt Hello.txt
” w systemie plików bez rozróżniania wielkości liter zawsze wyzwaladestination already exists
błąd, ponieważ te dwie nazwy odnoszą się do tej samej ścieżki z punktu widzenia systemu plików i wymagają od użytkownika podania „--force
” podczas poprawiania wielkości liter ścieżki zapisanej w indeksie i w pliku następne zatwierdzenie.git mv hello.txt Hello.txt
po prostu działa (nie--force
jest już wymagane).Inną alternatywą jest:
I zmień nazwę pliku bezpośrednio; git dodaj i zatwierdź.
źródło
git config core.ignorecase false
Biorąc pod uwagę odpowiedź larska , możesz sprawić, by działała za pomocą jednego polecenia z „--force”:
źródło
Error: Will not add file alias 'MyFile' ('myfile' already exists in index)
Czasami chcesz zmienić wielkość liter w wielu nazwach plików w systemie plików bez rozróżniania wielkości liter (np. W OS X lub Windows). Wykonywanie
git mv
poleceń szybko się męczy. Aby trochę to ułatwić, robię to:git add . -A
aby usunąć wszystkie pliki.git add .
. Git powinien zobaczyć, że nazwy plików zostały zmienione.Teraz możesz dokonać zatwierdzenia, mówiąc, że zmieniłeś wielkie litery nazw plików.
źródło
Nazwy plików w systemie OS X nie rozróżniają wielkości liter (domyślnie). Jest to bardziej problem z systemem operacyjnym niż problem z Git. Jeśli usuniesz i odczytałeś plik, powinieneś dostać to, czego chcesz lub zmienić jego nazwę na inną, a następnie zmienić nazwę z powrotem.
źródło
git clone
repozytorium w systemie Linux, zmienić nazwy plików i zatwierdzić je tylko w tej sytuacji (jeśli masz pod ręką system Linux).git rm --cached fileorfolder
do usunięcia pliku lub folderu z git bez usuwania pliku lub folderu z systemu plików. Następnie możesz po prostu dodać plik lub folder ponownie za pomocągit add fileorfolder
.Ustaw
ignorecase
nafalse
git configPonieważ oryginalny post mówi o „Zmienianiu wielkich liter nazw plików w Git”:
Jeśli próbujesz zmienić wielkość liter w nazwie pliku, nie musisz wymuszać zmiany nazwy z Git. IMO, wolałbym zmienić wielkie litery z mojego IDE / edytora i upewnić się, że poprawnie skonfigurowałem Git, aby podjął zmianę nazwy.
Domyślnie szablon Git ignoruje wielkość liter (Git nie rozróżnia wielkości liter). Aby sprawdzić, czy masz szablon domyślny, użyj,
--get
aby pobrać wartość określonego klucza. Użyj--local
i,--global
aby wskazać Gitowi, czy chcesz pobrać klucz-wartość konfiguracji z lokalnej konfiguracji repozytorium Git czy z globalnej. Na przykład, jeśli chcesz sprawdzić swój klucz globalnycore.ignorecase
:Jeśli to się zwróci
true
, ustaw go jako:(Upewnij się, że masz odpowiednie uprawnienia do zmiany globalnej.) I oto masz; teraz twoja instalacja Git nie ignoruje kapitalizacji i nie traktuje ich jak zmian.
Jako sugestię, jeśli pracujesz nad projektami w wielu językach i uważasz, że nie wszystkie projekty powinny być traktowane przez Git z rozróżnianiem wielkości liter, po prostu zaktualizuj
core.ignorecase
plik lokalny .źródło
git config --global --get core.ignorecase
nic nie zwróci. Czy to jesttrue
?? ponieważ po ustawieniu gofalse
zwraca false (Windows 10)git mv
). Zakładam również, że domyślnie jest to uważane za prawdziwe (tzn. Ignoruje wielkość liter). Albo to, albo pasuje do zasad systemu operacyjnego do nazw plików.Możesz otworzyć katalog „.git”, a następnie edytować plik „config”. W ustawieniu „[core]” ustaw „ignorecase = true” i gotowe;)
źródło
Aby zbiorczo
git mv
pliki na małe litery w systemie macOS:Pomniejszy wszystkie pliki w folderze.
źródło
Ten fragment kodu w języku Python spowoduje, że
git mv --force
wszystkie pliki w katalogu będą pisane małymi literami. Na przykład foo / Bar.js zmieni się na foo / bar.js przezgit mv foo/Bar.js foo/bar.js --force
.Zmodyfikuj go według własnych upodobań. Pomyślałem, że podzielę się :)
źródło
Przykład roboczy:
źródło