Changer la capitalisation des noms de fichiers en Git

J’essaie de renommer un fichier pour avoir une capitalisation différente de celle qu’il avait auparavant:

git mv src/collision/b2AABB.js src/collision/B2AABB.js fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js 

Comme vous pouvez le voir, Git jette un coup sur cela. J’ai essayé de renommer en utilisant simplement la vieille commande mv mais git ne prend pas le renommage (comme un nouveau fichier ou un nouveau fichier non suivi).

Comment changer un fichier pour avoir une capitalisation différente du même nom? Je suis sous Mac OS X 10.7.3 avec git 1.7.9.1 en utilisant zsh 4.3.15.

À partir de git 2.0.1 (25 juin 2014), un git mv ne fonctionnera que sur les systèmes d’exploitation insensibles à la casse .

Voir commettre baa37bf par David Turner ( dturner-tw )

mv : permet de renommer pour corriger la casse sur des systèmes de fichiers insensibles à la casse

git mv hello.txt Hello.txt ” sur un système de fichiers insensible à la casse déclenche toujours une erreur ” destination already exists “, car ces deux noms font référence au même chemin du sharepoint vue du système de fichiers et obligent l’utilisateur à ” --force “lors de la correction de la casse du chemin enregistré dans l’index et dans le prochain commit.

Détectez ce cas et autorisez-le sans exiger ” --force “.

git mv hello.txt Hello.txt fonctionne (pas besoin de forcer).

Compte tenu des réponses ci-dessus, vous pouvez le faire fonctionner avec une seule commande avec “–force”:

  git mv --force myfile MyFile 

Parfois, vous voulez changer la capitalisation de beaucoup de fichiers sur OS X. Faire des commandes git mv va vite fatiguer, pour faciliter les choses, voici ce que je fais:

  1. Déplacez tous les fichiers en dehors du répertoire pour dire le bureau.
  2. Faites un git add . -A git add . -A pour supprimer tous les fichiers.
  3. Renommez tous les fichiers du bureau à la capitalisation appropriée.
  4. Déplacer tous les fichiers dans le répertoire d’origine.
  5. Faites un git add . git devrait voir que les fichiers sont renommés.

Vous pouvez maintenant effectuer une validation en disant que vous avez changé la capitalisation du fichier.

Les noms de fichiers sous OS X ne sont pas sensibles à la casse (par défaut). Ceci est plus un problème de système d’exploitation qu’un problème de git. Si vous supprimez et rajoutez le fichier, vous devriez obtenir ce que vous voulez, ou le renommer en quelque chose d’autre et le renommer.

Comme l’OP concerne “Changer la capitalisation des noms de fichiers dans Git”:

Si vous essayez de modifier la capitalisation d’un nom de fichier dans votre projet, vous n’avez pas besoin de le renommer de git. IMO, je préférerais changer la capitalisation de mon IDE / éditeur et assurez-vous que je configure correctement git pour prendre le renommage.

Par défaut, un git template est défini pour ignorer la casse (insensible à la casse). Pour vérifier que vous avez le modèle par défaut, utilisez --get pour récupérer la valeur d’une clé spécifiée. Utilisez --local et --global pour indiquer si vous --global récupérer la valeur-clé de configuration de votre configuration go repo locale ou globale. Comme exemple, si vous voulez rechercher votre clé globale core.ignorecase :

 git config --global --get core.ignorecase 

Si cela renvoie true assurez-vous de le définir comme suit:

 git config --global core.ignorecase false 

(Assurez-vous que vous disposez des permissions appropriées pour changer le global) Et voilà, votre git n’ignorera plus les capitalisations et les traitera comme des modifications.

À titre de suggestion, si vous travaillez sur des projets multilingues et que vous pensez que tous les projets ne doivent pas être traités comme sensibles à la casse par Git, mettez simplement à jour le core.ignorecase local core.ignorecase

Vous pouvez ouvrir le répertoire “.git” puis éditer le fichier “config”. Sous “[core]”, définissez “ignorecase = true” et vous avez terminé;)

Cet extrait de python va git mv --force tous les fichiers d’un répertoire à être en minuscule, ex: foo / Bar.js deviendra foo / bar.js via git mv foo/Bar.js foo/bar.js --force

Modifiez-le à votre goût, je pensais juste que je partagerais 🙂

 import os import re searchDir = 'c:/someRepo' exclude = ['.git', 'node_modules','bin'] os.chdir(searchDir) for root, dirs, files in os.walk(searchDir): dirs[:] = [d for d in dirs if d not in exclude] for f in files: if re.match(r'[AZ]', f): fullPath = os.path.join(root, f) fullPathLower = os.path.join(root, f[0].lower() + f[1:]) command = 'git mv --force ' + fullPath + ' ' + fullPathLower print(command) os.system(command) 

Pour git mv fichiers git mv en minuscules sur macOS:

 for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done 

Il minuscule tous les fichiers dans un dossier.