2010-10-13 11 views
51

Volevo rinominare una cartella da "Frameworks" a "frameworks", ma git non mi permetteva di aggiungere il nuovo nome in lettere minuscole. Immagino che tratti i nomi dei file insensibili, vero?Git: File Rename

Un git add frameworks/ -f non ha aiutato

+0

Quale sistema operativo? –

+0

Corro MacOS 10.6 –

risposta

97

si può provare:


Ma la questione del caso (su Windows per esempio) è descritta nel msysgit issue 228 (di nuovo: questo dovrebbe now -- June 2014 -- work with git 2.0.1)

c'è sempre un'opzione per impostare ignorecase su false nel file di configurazione che costringerà Unix come la semantica di Git su NTFS.
Git supporta questo comportamento, ma non è il default - dal punto di vista NTFS a.txt e A.txt sono la stessa cosa - così Git cerca di preservare che come la maggior parte degli utenti si aspettano

Come soluzione alternativa, è possibile

git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt 

, che cambia anche il caso del file come memorizzato su disco.

Questo post del blog illustrates the same issue on MacOs durante un rebase:

L'impostazione predefinita sui file X sistemi Mac OS è che sono maiuscole e minuscole. FFFFFF.gif corrisponde a ffffff.gif.

Se si elimina il file in questione, solo dal file system, non dall'indice Git, attenzione, è possibile unire il ramo in questione e farlo ripristinare il file come se nulla fosse successo.

I passaggi sono abbastanza semplici:

$ rm file/in/question.gif 
$ git merge trunk 

Comunque, remember what git mv stands for:

mv oldname newname 
git add newname 
git rm oldname 

, quindi se newname e oldname scontro, è necessario renderli diversi (anche se è solo per un breve periodo di tempo), da cui il git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

+0

Ho già provato 'git mv' ma mi è risultato' fatale: rinominare 'Frameworks' non riuscito: argomento non valido ' –

+0

@Erik: qual è stata la riga di comando esatta che hai provato? – VonC

+1

Ok il passo 2 'git mv' ha funzionato! –

1

Stavo riscontrando un problema simile e non è stato possibile ottenere un nuovo nome di cartella (caso diverso) da modificare nei repository remoti. Ho trovato che la soluzione più semplice era semplicemente spostare il file dal repository e commettere. Attivare un'azione di eliminazione. Quindi aggiungere nuovamente e quando ho aggiunto, è venuto con il caso corretto.

2

Se ti capita di ospitare su Github, puoi utilizzare la funzione di rinomina sul loro sito web. Ho dovuto cambiare il case per 5 file e ho scoperto che funzionava molto bene.