web-dev-qa-db-fra.com

Git: Renommer un fichier

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é

51
Erik Aigner

Tu peux essayer:


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 NTFS a.txt et A.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 que ffffff.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

97
VonC

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.

2
kvz

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é.

1
David