Come rinominare un file in git che differisce solo per 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 commetto ottengo:

fatale: non aggiungerà l'alias di file 'MyProject / MyFile.h' ('MyProject / MyFilE.h' esiste già nell'indice)

Sono sicuro che ciò è dovuto al fatto che git non è utilizzato per essere eseguito su un filesystem che non fa distinzione tra maiuscole e minuscole come HFS +. Ma come aggirarlo?

Ho provato a rinominare entrambi i file in qualcos'altro e l'ho commesso, quindi rinominandoli di nuovo in quello che voglio, ma continua a fallire (con lo stesso messaggio di errore).

Risposte:


21

Come richiesto e risposto su StackOverflow , esiste un modo più semplice per farlo che non comporta la creazione di un nuovo file system in un file immagine del disco:

Spostare il file esistente da parte, eseguire il commit di tale spostamento, quindi spostarlo indietro utilizzando il caso che si desidera conservare e eseguire il commit. 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"

nell'interesse di evitare la putrefazione del link di solito ti chiediamo di copiare le parti pertinenti della risposta dietro il link nel corpo della risposta.
Ian C.

Grazie @ ian-c. Speravo che questa regola non si applica ai collegamenti all'interno della famiglia di stackexchange.
mspasov,

1
Sì, ho capito cosa stai dicendo, ma la coerenza è buona.
Ian C.

Strano. Sono stato sicuro di averlo provato, ma oggi funziona. Grazie.
Ken,

2

Non ho ancora trovato un modo per risolvere questo problema direttamente su un file system senza distinzione tra maiuscole e minuscole, è necessario un filesystem con distinzione tra maiuscole e minuscole.

Fortunatamente Mac OS X ha un buon supporto per il montaggio del disco virtuale, quindi puoi ottenere rapidamente (facilmente) un filesystem (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 esteso". 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 il nome corretto abbia i contenuti corretti ed elimina l'altro. Conferma e invia le modifiche, quindi puoi smontare l'immagine del disco ed eliminarla.

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


1
È tremendamente laborioso. Puoi farlo senza dover creare un nuovo file system in un file immagine del disco.
Ian C.

1

Passaggio 1 : basta rinominare il file con un nome più diverso (rispetto al solo caso delle lettere). Basta scegliere un nome casuale diverso dal nome corrente e dal nome che si desidera assegnare.

Passaggio 2 : eseguire il commit di questo file tramite GUI (Xcode) o CLI (Terminale)

Passaggio 3 : rinominare il file come si desidera rinominarlo in primo luogo. Quindi ora ci sarà anche più differenza rispetto al caso con il nome precedente.

Passaggio 4 : eseguire nuovamente il commit del file rinominato.

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


0

Uso sourcetree. Senza utilizzare l'interfaccia della riga di comando, è facile eseguire questa operazione. rinominare il file con un altro nome (ad esempio Index.php in Index_old.php) quindi eseguire il commit e premere .. di nuovo cambiare il nome nel nome desiderato (index.php) quindi eseguire il commit e l'invio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.