216 votes

Je change la capitalisation d'un répertoire et Git ne semble pas s'en apercevoir.

Je développe un projet sur OS X Lion qui est sous contrôle de version Git. J'avais ces répertoires en minuscules et je les ai ensuite mis en majuscules (par exemple emailaddresses => EmailAddresses), mais Git ne semble pas reconnaître le changement. Il pense toujours que les répertoires sont en minuscules lorsque j'exécute git ls-files et d'autres commandes.

Est-ce inoffensif, ou dois-je faire autre chose pour que Git détecte ce changement ?

2 votes

410voto

Taran Points 5286

Vous pouvez indiquer à git de tenir compte de ce cas en exécutant

git config core.ignorecase false

9 votes

Réponse vraiment géniale si vous avez déjà changé les noms de fichiers sans utiliser git mv --force ou un autre CL script. Merci !

10 votes

C'est la meilleure réponse car je n'avais pas particulièrement envie d'ingérer manuellement les 200 fichiers renommés dans git mv'ing !

0 votes

Merci ! Cela m'a permis d'économiser beaucoup de temps en renommant constamment les fichiers après avoir changé de branche.

280voto

Paul R Points 104036

Vous utilisez probablement HFS+ sans tenir compte de la casse (mais en la préservant). Je contourne généralement ce problème de la manière suivante :

$ git mv somename tmpname
$ git mv tmpname SomeName

3 votes

J'ai eu le même problème avec l'outil Github pour Windows. Encore une fois, la solution ci-dessus permet de contourner le problème : renommer dans un fichier temporaire dans Windows Exploer, puis - après avoir validé - renommer dans le nom final avec la casse correcte.

14 votes

Ou bien le faire en une seule commande : git mv --force somename SomeName (from stackoverflow.com/a/16071375/217866 )

1 votes

Pour que les changements soient reflétés dans le repo distant, vous devez également git push origin master . Si git refuse de mettre à jour le remote, vous pouvez avoir besoin d'ajouter un fichier factice (par ex. touch stam ) et faire le push. Suivi d'une suppression ultérieure de stam et d'une nouvelle poussée.

40voto

David Manpearl Points 5455

Comment faire git mv sur Mac de manière sensée

Cela se produit parce que Mac OS X met en œuvre des fonctions de préservation de la casse et d'insensibilité à la casse qui sont destinées à vous aider.

Bien que les suggestions de double renommage dans l'autre réponse fonctionnent, je recommande l'utilisation de '--force' pour un résultat optimal :

$ git mv --force somename SomeName

Note : si vous essayez sans l'option force, git vous vomira dessus comme ceci :

$ git mv somename SomeName
$ fatal: destination exists, source=somename, destination=SomeName

Dans l'exemple ci-dessus, la commande git échoue et aucun fichier n'est modifié dans le système de fichiers ou dans l'index de git.

0 votes

A la première commande, j'obtiens fatal: not under version control .

0 votes

Cette erreur fatale signifie que vous n'avez pas de dépôt GIT à cet endroit. git ne fonctionnent que dans les répertoires contenant des dépôts GIT.

0 votes

Mais j'étais dans un sous-répertoire de mon repo Git Finalement, j'ai résolu le problème via Réponse de Taran BTW. Merci.

21voto

pooamlairaj Points 1007

Essayez de changer l'option de configuration git core.ignorecase en false dans votre fichier .gitconfig.

4 votes

Ou écrire git config core.ignorecase false

2 votes

@iforgotmypassword = vous auriez dû répondre - j'aurais voté pour vous en fait.

11voto

Renil Babu Points 470

Les étapes suivantes m'ont permis de résoudre le problème :

  1. Renommez le dossier en temp :

    mv Folder temp                  // It will rename your Folder to temp
  2. Scène et engagement :

    git add .
    git commit -m "Temp"
  3. Renommer temp dossier à votre choix :

    mv temp folder        // It will rename temp folder to the name of your choice(folder)
    git add .
    git commit -m "Folder Fixed"

Terminé - Vous pouvez maintenant pousser.

1 votes

Cela a bien fonctionné. Merci beaucoup.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X