W naszej bazie kodu kontrolowanej przez git znajduje się kilka plików, których nazwę chciałbym zmienić. W szczególności chcę po prostu zmienić wielkość liter pliku, aby sourceCode.java
stało się to SourceCode.java
na przykład. Haczyk: korzystam z systemu Windows, a system plików uważa, że są to te same nazwy plików.
Jak sprawić, aby Windows i Git rozpoznały tę zmianę i zarejestrowały ją?
git mv
powinno działać ( stackoverflow.com/a/24979063/6309 ). Nawet w systemie Windows.Odpowiedzi:
Zajrzyj tutaj, aby uzyskać więcej wskazówek, jak to zrobić:
Jak sprawić, by git ignorował zmiany w przypadku?
Lub:
źródło
git add
z tego folderu o nowej nazwie, NIE NALEŻY PRZEKAZAĆ, zmień nazwę folderu z powrotem na taki, jaki powinien być ,git add
to ponownie, a następnie zatwierdzenie.Get-ChildItem '.' | Rename-Item {$_.Name.ToLowerCase()}
Jeśli korzystasz z systemu plików FAT, jedynym wyborem jest zmiana nazwy na dwa etapy:
sourceCode.java
naanything.you.like
anything.you.like
naSourceCode.java
W czasach, gdy korzystaliśmy z Perforce, mieliśmy dokładnie ten problem i było to jedyne rozwiązanie, jakie mogliśmy wymyślić.
źródło
Poniższe kroki pozwoliły mi zmienić wielkość liter w systemie Windows:
ignorecase = false
do[core]
w.git/config
;ignorecase = false
dodane w pierwszym kroku.W ten sposób masz jeden zatwierdzenie, które zawiera zmianę nazwy i ułatwia zmianę np. Całego katalogu.
źródło
Bądź ostrożny. Może to doprowadzić do zmian, których scalenie jest niemożliwe. Git jest zdezorientowany podczas łączenia w systemie Windows, ponieważ nie może zdecydować, czy stara nazwa wielkich liter i nowa mała litera są tym samym plikiem, czy nie (w przypadku Git tak nie jest, ale dla systemu plików są). Aby scalić, musisz wykonać ręczne obejście, takie jak usunięcie plików przed scaleniem.
Zobacz problem z Git rebase z plikami o tej samej nazwie, ale innej wielkości
Nie jestem pewien, czy ten problem jest gorszy niż posiadanie niekonwencjonalnie nazwanego pliku w swoim projekcie na zawsze, ale warto wiedzieć, czy jest wielu użytkowników z wieloma oddziałami, które ostatecznie będą musiały zostać scalone.
źródło
Moim zdaniem brakuje jednego prostego sposobu. Możesz to zrobić dla pojedynczego pliku, określonego katalogu lub nawet całego repozytorium:
Jeśli chcesz wpływać również na podkatalogi, musisz użyć
-r
flagi:źródło
W przypadku NTFS (lub FAT) pojedyncze
git mv
polecenie nie rozwiązuje problemu. To pytanie pokazuje technikę, która działa: git mv i zmieniaj tylko wielkość liter w kataloguźródło