2010-10-13 7 views
51

Je voulais renommer un dossier de "Frameworks" en "frameworks", mais git ne me laisserait pas ajouter le nouveau nom en minuscule. Je suppose qu'il traite les noms de fichiers insensible à la casse, n'est-ce pas?Git: Renommer le fichier

Un git add frameworks/ -f n'a pas aidé

+0

Quel système d'exploitation? –

+0

Je cours MacOS 10.6 –

Répondre

97

Vous pouvez essayer:


Mais la question de cas (sous Windows par exemple) est décrit dans le msysgit issue 228 (encore une fois: cela devrait now -- June 2014 -- work with git 2.0.1)

il y a toujours une option pour définir ignorecase false dans le fichier de configuration qui va forcer Unix comme la sémantique Git au-dessus de NTFS.
Git soutient ce comportement, mais il n'est pas la valeur par défaut - du point de vue NTFS a.txt et A.txt sont la même chose - si Git tente de préserver ce que la plupart des utilisateurs s'attendent

Comme une meilleure solution de contournement, vous pouvez

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

, qui modifie également le cas du fichier tel qu'il est stocké sur le disque.

Ce billet de blog illustrates the same issue on MacOs lors d'un rebasage:

La valeur par défaut sur les systèmes de fichiers Mac OS X est qu'ils sont insensibles à la casse. FFFFFF.gif est la même que ffffff.gif.

Si vous supprimez le fichier en question, juste à partir 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 rien ne s'était passé.

Les étapes sont assez simples:

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

Quoiqu'il en soit, remember what git mv stands for:

mv oldname newname 
git add newname 
git rm oldname 

, donc si newname et oldname affrontement, vous devez les rendre différents (même si c'est seulement pour une courte période de temps), d'où le git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

+0

J'ai déjà essayé 'git mv' mais il m'a donné' fatal: renommer 'Frameworks' échoué: argument invalide' –

+0

@Erik: quelle était la ligne de commande exacte que vous avez essayé? – VonC

+1

Ok, les 2 étapes 'git mv' ont fonctionné! –

1

J'avais un problème similaire et je n'ai pas pu obtenir un nouveau nom de dossier (cas différent) à modifier sur repos distant. J'ai trouvé que la solution la plus simple était juste de sortir le fichier du dépôt et de le valider. Déclenchement d'une action de suppression Puis rajouter et quand j'ai ajouté, il est venu avec le cas approprié.

2

Si vous hébergez sur Github, vous pouvez utiliser la fonction renommer sur leur site Web. J'ai dû changer le boîtier pour 5 fichiers et j'ai trouvé que ça marchait très bien.