Je voulais renommer un dossier de "Frameworks
" en "frameworks
", mais git ne me laisserait pas ajouter le nouveau nom en minuscule. Je suppose que cela traite les noms de fichiers insensibles à la casse, n'est-ce pas?
UNE git add frameworks/ -f
n'a pas aidé
Tu peux essayer:
"git mv -f foo.txt Foo.txt"
(note: c'est plus nécessaire depuis git 2.0.1 )ignorecase
sur false dans le fichier de configuration.Mais la question de la casse (sur Windows par exemple) est décrite dans le problème msysgit 228 (encore une fois: cela devrait maintenant - juin 2014 - fonctionne avec git 2.0.1 )
il y a toujours une option pour définir
ignorecase
sur false dans le fichier de configuration qui forcera Unix comme la sémantique Git au-dessus de NTFS.
Git prend en charge ce comportement mais ce n'est pas la valeur par défaut - du point de vue NTFSa.txt
etA.txt
c'est la même chose - donc Git essaie de préserver cela comme la plupart des utilisateurs s'y attendent
Pour une meilleure solution de contournement, vous pouvez
git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt
, ce qui modifie également la casse du fichier tel qu'il est stocké sur le disque.
Ce billet de blog illustre le même problème sur MacOs lors d'un rebase:
La valeur par défaut sur les systèmes de fichiers Mac OS X est qu'ils ne respectent pas la casse.
FFFFFF.gif
est le même queffffff.gif
.Si vous supprimez le fichier en question, juste du système de fichiers, pas de l'index Git, vous pouvez fusionner la branche en question et lui faire restaurer le fichier comme si de rien n'était.
Les étapes sont assez simples:
$ rm file/in/question.gif $ git merge trunk
Quoi qu'il en soit, rappelez-vous ce que git mv signifie :
mv oldname newname
git add newname
git rm oldname
, donc si newname
et oldname
s'affrontent, vous devez les rendre différents (même si ce n'est que pour une courte période), d'où le git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt
Si vous hébergez sur Github, vous pouvez utiliser la fonction renommer sur leur site Web. J'ai dû changer le boîtier de 5 fichiers et j'ai trouvé que cela fonctionnait très bien.
J'avais un problème similaire et je n'ai pas pu obtenir un nouveau nom de dossier (cas différent) à modifier sur les dépôts distants. J'ai trouvé que la solution la plus simple consistait simplement à déplacer le fichier hors du référentiel et à le valider. Déclenchement d'une action de suppression. Ensuite, ajoutez à nouveau et quand j'ai ajouté, il est venu avec le cas approprié.