Comment renommer un fichier dans git qui diffère uniquement par la casse?

14

Dans mon projet git (Xcode), j'ai validé un nom de fichier avec une casse incorrecte. Maintenant, je suis allé essayer de le renommer, mais quand je m'engage, j'obtiens:

fatal: n'ajoutera pas l'alias de fichier 'MyProject / MyFile.h' ('MyProject / MyFilE.h' existe déjà dans l'index)

Je suis sûr que c'est parce que git n'est pas utilisé sur un système de fichiers respectant la casse et ne respectant pas la casse comme HFS +. Mais comment le contourner?

J'ai essayé de renommer les deux fichiers en quelque chose d'autre, et je l'ai commis, puis en les renommant comme je le souhaite, mais cela échoue toujours (avec le même message d'erreur).

Ken
la source

Réponses:

21

Comme demandé et répondu sur stackoverflow , il existe un moyen plus simple de le faire qui n'implique pas de créer un nouveau système de fichiers dans un fichier d'image disque:

Déplacez votre fichier existant sur le côté, validez ce déplacement, puis déplacez-le en utilisant le cas que vous souhaitez qu'il conserve et valide. Terminé.

Exemple:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
mspasov
la source
afin d'éviter la pourriture des liens, nous vous demandons généralement de copier les parties pertinentes de la réponse derrière le lien dans le corps de la réponse.
Ian C.
Merci @ ian-c. J'espérais que cette règle ne s'applique pas aux liens à l'intérieur de la famille stackexchange.
mspasov
1
Oui, je comprends ce que vous dites, mais la cohérence est agréable.
Ian C.
Bizarre. J'étais certain d'avoir essayé, mais aujourd'hui ça marche. Merci.
Ken
2

Je n'ai pas encore trouvé de moyen de résoudre ce problème directement sur un système de fichiers insensible à la casse, vous avez besoin d'un système de fichiers sensible à la casse.

Heureusement, Mac OS X a une bonne prise en charge du montage de disque virtuel, de sorte que vous pouvez rapidement et facilement obtenir (créer) un système de fichiers (temporaire) sensible à la casse sur votre ordinateur.

Ouvrez l'Utilitaire de disque, créez une nouvelle image et définissez le champ "Format" sur l'une des versions sensibles à la casse de "Mac OS Extended". Assurez-vous également de le rendre suffisamment grand pour votre référentiel.

Montez votre nouveau disque, consultez le référentiel git dessus, assurez-vous que le fichier correctement nommé a le contenu correct et supprimez l'autre. Validez et transférez vos modifications, puis vous pouvez démonter l'image disque et la supprimer.

Si vous n'avez pas de serveur distant pour cloner (c'est-à-dire que vous exécutez simplement un dépôt git localement sur votre disque dur), n'oubliez pas que vous pouvez cloner directement à partir de l'autre référentiel git sur votre disque dur.

drfrogsplat
la source
1
C'est terriblement laborieux. Vous pouvez le faire sans avoir à faire tourner un nouveau système de fichiers dans un fichier image disque.
Ian C.
1

Étape 1 : Renommez simplement le fichier avec un nom qui est plus différent (que seulement le cas des lettres.) Choisissez simplement un nom aléatoire différent du nom actuel et du nom que vous voulez lui donner.

Étape 2 : valider ce fichier par GUI (Xcode) ou par CLI (Terminal)

Étape 3 : renommez le fichier comme vous vouliez le renommer en premier lieu. Alors maintenant, il y aura également plus de différence que le cas avec le nom précédent.

Étape 4 : validez à nouveau le fichier renommé.

Pas de tours de magie nécessaires. Et vous pouvez choisir de vous engager par GUI ou CLI.

Bartel De Brabandere
la source
0

J'utilise sourcetree. Sans utiliser CLI, il est facile de le faire. renommer le fichier sous un autre nom (par exemple Index.php en Index_old.php) puis valider et pousser .. encore changer le nom en nom souhaité (index.php) puis valider et soumettre.

Hemantha
la source