1883 votes

Comment valider les changements de noms de fichiers en respectant la casse dans Git ?

J'ai changé le nom de quelques fichiers en dé-capitalisant la première lettre, comme dans Name.jpg a name.jpg . Git ne reconnaît pas ces changements et j'ai dû supprimer les fichiers et les télécharger à nouveau. Existe-t-il un moyen pour que Git soit sensible à la casse lors de la vérification des changements dans les noms de fichiers ? Je n'ai apporté aucune modification au fichier lui-même.

5 votes

@nif ce n'est pas tout à fait correct, Git a en fait un paramètre de configuration qui contrôle si oui ou non il ignore la sensibilité à la casse.

10 votes

Ver stackoverflow.com/a/24979063/6309 : depuis git 2.0.1, un simple git mv travaux.

0 votes

100voto

Steve Chambers Points 3303

Il est parfois utile de temporairement modifier la sensibilité de Git à la casse.

Méthode n° 1 - Modifier la sensibilité à la casse pour une seule commande :

git -c core.ignorecase=true checkout mybranch pour désactiver la sensibilité à la casse pour une seule checkout commandement. Ou plus généralement : git -c core.ignorecase= <<true or false>> <<command>> . (Crédit à VonC pour avoir suggéré cela dans les commentaires).

Méthode n° 2 - Modifier la sensibilité à la casse pour plusieurs commandes :

Pour modifier le paramètre pendant plus longtemps (par exemple, si plusieurs commandes doivent être exécutées avant de le modifier à nouveau) :

  1. git config core.ignorecase (ce qui renvoie le paramètre actuel, par ex. false ).
  2. git config core.ignorecase <<true or false>> - définir le nouveau réglage souhaité.
  3. ...Exécuter plusieurs autres commandes...
  4. git config core.ignorecase <<false or true>> - remettre la valeur de la configuration à sa valeur précédente.

49voto

Nous pouvons utiliser la commande git mv. Exemple ci-dessous, si nous avons renommé le fichier abcDEF.js en abcdef.js, nous pouvons exécuter la commande suivante depuis le terminal

git mv -f .\abcDEF.js  .\abcdef.js

45voto

user1821510 Points 111

Sous OSX, pour éviter ce problème et d'autres problèmes liés au développement sur un système de fichiers insensible à la casse, vous pouvez utiliser l'Utilitaire de disque pour créer un cas sensible lecteur virtuel / image disque.

Exécutez l'utilitaire de disque, créez une nouvelle image disque, et utilisez les paramètres suivants (ou modifiez-les comme vous le souhaitez, mais respectez la casse) :

Mac Disk Utility Screenshot

Assurez-vous de dire à git qu'il est maintenant sur un FS sensible à la casse :

git config core.ignorecase false

15 votes

Non, le nucléaire utilise un disque de démarrage entièrement sensible à la casse sous OSX. Vous devrez vous passer d'applications mal écrites (ahem, Adobe), ou les exécuter dans leur propre VM sensible à la casse, mais cela en vaut la peine si vous codez principalement pour des systèmes *nix.

1 votes

C'est la seule option qui fonctionne correctement. J'ai essayé les autres et vous vous retrouvez dans le pétrin d'une manière ou d'une autre. Résolvez le problème correctement en faisant ceci.

2 votes

Notez que Disk Utility présente un bogue sous OS X 10.11 : il ne crée pas d'images sensibles à la casse. Vous devez utiliser l'outil en ligne de commande hdiutil. apple.stackexchange.com/questions/217915/

28voto

Anupam Points 7016

Comme pour la réponse de @Sijmen, voici ce qui a fonctionné pour moi sur OSX lorsque renommer un répertoire (inspiré par este réponse d'un autre poste) :

git mv CSS CSS2
git mv CSS2 css

Faire simplement git mv CSS css a donné l'erreur d'argument invalide : fatal: renaming '/static/CSS' failed: Invalid argument peut-être parce que le système de fichiers d'OSX est insensible à la casse

p.s BTW si vous utilisez Django, collectstatic ne reconnaîtra pas non plus la différence de casse et vous devrez faire ce qui précède, manuellement, dans le répertoire racine statique également.

25voto

razon Points 36
  1. renommer un fichier Name.jpg a name1.jpg

  2. commit a supprimé le fichier Name.jpg

  3. renommer un fichier name1.jpg a name.jpg

  4. modifier le fichier ajouté name.jpg à l'engagement précédent

    git add name.jpg
    git commit --amend

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