Sto lavorando con git su windows e ho un file nel mio repository, diciamo "foo.txt". Oggi ho voluto rinominare questo file in "Foo.txt" (maiuscolo). Come suggerito in this SO question, ho usato git mv -f foo.txt Foo.txt
, che ha prodotto il risultato desiderato. Ho proceduto a commit la modifica al mio repo.
MODIFICA: Mi piacerebbe che questo fosse un cambiamento permanente, ed essere ancora in grado di eseguire il checkout che precede questo cambiamento.Git su windows: impossibile cambiare ramo dopo aver rinominato un file (solo maiuscole/minuscole)
Tuttavia, dopo che ho incontrato un errore sul tentativo di cambiare ramo:
# I'm on branch1
git checkout branch2
Aborting
error: The following untracked working tree files would be overwritten by checkout:
Foo.txt
Please move or remove them before you can switch branches.
Dopo qualche rovistando ho scoperto che il mio file .git/config
ha avuto la seguente impostazione:
[core]
ignorecase=false
La modifica di questa a true sembra risolvere il problema e mi permette di cambiare tra i rami normalmente.
Quindi per quanto riguarda questo, vorrei sapere:
- C'è qualche effetto negativo di questa impostazione? Dovrebbe essere sempre vero su Windows? Cosa succede se sto lavorando con altri sviluppatori e non hanno lo stesso valore impostato per questo?
- C'è un altro modo per rinominare il file senza dover modificare questa impostazione?
- Perché questo accade in primo luogo? Quando ho eseguito il commit della modifica, git ha identificato correttamente che il file è stato effettivamente rinominato (non ha eliminato un file e quindi ne ha aggiunto un altro). Quindi cosa è successo esattamente quando ho provato a cambiare ramo?
Grazie!
Ciò significherebbe che avrei eliminato il file ogni volta che voglio cambiare ramo, da ora fino all'infinito. Destra? Sembra un po 'scomodo ... – avivr
Hai provato davvero? Nel mio caso ha funzionato, ma non pretenderò di poter riprodurre completamente la tua situazione – bigge
Sì, l'ho fatto, almeno supponendo di aver capito bene. Ho rinominato il file con git, quindi ho eseguito il commit della modifica. Poi ho cancellato il file (solo con 'rm') e ho usato' git checkout .' per ripristinarlo. Dopo, lo stesso errore quando si cambia ramo. – avivr