Come rinominare un file in git che differisce solo dal caso?

14

Nel mio progetto git (Xcode), ho commesso un nome file con un caso improprio. Ora sono andato a provare a rinominarlo, ma quando mi impegno, ottengo:

fatal: Will not add file alias 'MyProject/MyFile.h' ('MyProject/MyFilE.h' already exists in index)

Sono sicuro che ciò è dovuto al fatto che git non è abituato ad essere in esecuzione su un filesystem che non tiene conto di maiuscole e minuscole, come HFS +. Ma come faccio a girarlo?

Ho provato a rinominare entrambi i file con qualcos'altro, l'ho eseguito e poi rinominato in quello che voglio, ma non riesce ancora (con lo stesso messaggio di errore).

    
posta Ken 15.05.2012 - 07:43
fonte

4 risposte

20

Come richiesto e risposto su stackoverflow , esiste un modo più semplice per eseguire ciò che non comporta la creazione di un nuovo file sistema in un file immagine del disco:

Sposta il file esistente da parte, esegui il commit della mossa, quindi spostalo indietro utilizzando il caso che desideri conservare e salvare. Fatto.

Esempio:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
    
risposta data 18.05.2012 - 17:01
fonte
2

Non ho ancora trovato un modo per risolvere questo problema direttamente su un file system senza distinzione tra maiuscole e minuscole, hai bisogno di un filesystem sensibile al maiuscolo / minuscolo.

Fortunatamente Mac OS X ha un buon supporto per il montaggio virtuale del disco, così puoi rapidamente & facilmente ottenere (creare) un file system (temporaneo) sensibile al maiuscolo / minuscolo sul tuo computer.

Apri Utility Disco, crea una nuova immagine e imposta il campo "Formato" su una delle versioni con distinzione tra maiuscole e minuscole di "Mac OS Extended". Assicurati anche di renderlo abbastanza grande per il tuo repository.

Monta il tuo nuovo disco, controlla il repository git su di esso, assicurati che il file con nome corretto abbia il contenuto corretto ed elimina l'altro. Confida e invia le modifiche, quindi puoi smontare l'immagine del disco ed eliminarla.

Se non hai un server remoto da cui clonare (ovvero stai eseguendo un repository git localmente sul tuo disco fisso), ricorda che puoi clonare direttamente dall'altro repository git sul tuo disco fisso.

    
risposta data 15.05.2012 - 12:26
fonte
1

Passaggio 1 : basta rinominare il file con un nome più diverso (rispetto al solo caso di lettere). Scegli un nome casuale diverso dal nome corrente e dal nome che vuoi dargli.

Passaggio 2 : commit questo file per GUI (Xcode) o CLI (Terminale)

Passaggio 3 : rinomina il file come vuoi rinominarlo in primo luogo. Così ora, ci saranno anche più differenze rispetto al caso con il nome precedente.

Passaggio 4 : conferma di nuovo il file rinominato.

Non sono necessari trucchi magici. E puoi scegliere di eseguire il commit tramite GUI o CLI.

    
risposta data 14.12.2015 - 18:59
fonte
0

Io uso sourcetree. Senza usare la CLI c'è un semplice passaggio per farlo. rinominare il file in un altro nome (ad esempio Index.php in Index_old.php), quindi eseguire il commit e premere .. modificare nuovamente il nome nel nome desiderato (index.php), quindi eseguire il commit e inviare.

    
risposta data 04.07.2016 - 07:48
fonte

Leggi altre domande sui tag