J'essaie de renommer un fichier pour avoir une capitalisation différente de ce qu'il avait avant:
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 également essayé de renommer en utilisant simplement l'ancienne mv
commande, mais Git ne récupère pas le renommage (en tant que renommage ou en tant que nouveau fichier non suivi).
Comment puis-je changer un fichier pour avoir une autre majuscule du même nom? Je suis sur Mac OS X v10.7.3 (Lion) avec Git 1.7.9.1 en utilisant Z shell (zsh) 4.3.15.
git
rename
case-sensitive
file-rename
knpwrs
la source
la source
git mv myfile foo; git mv foo MyFile
git mv hello.txt Hello.txt
fonctionnera sur un système d'exploitation insensible à la casse. Voir ma réponse ciRéponses:
À partir de Git 2.0.1 (25 juin 2014), a
git mv
fonctionnera simplement sur un système d'exploitation insensible à la casse .Voir commit baa37bf par David Turner (
dturner-tw
) .mv
: permet de renommer pour corriger la casse sur les 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 "destination already exists
" l'erreur, car ces deux noms se réfèrent au même chemin du point de vue du système de fichiers et obligent l'utilisateur à donner "--force
" lors de la correction de la casse du chemin enregistré dans l'index et dans le commit suivant.git mv hello.txt Hello.txt
fonctionne juste (plus--force
nécessaire).L'autre alternative est:
Et renommez le fichier directement; git ajouter et valider.
la source
git config core.ignorecase false
Compte tenu de la réponse de larsks , vous pouvez le faire fonctionner avec une seule commande avec "--force":
la source
Error: Will not add file alias 'MyFile' ('myfile' already exists in index)
Parfois, vous souhaitez modifier la mise en majuscule d'un grand nombre de noms de fichiers sur un système de fichiers insensible à la casse (par exemple sous OS X ou Windows). Les
git mv
commandes se fatiguent rapidement. Pour rendre les choses un peu plus faciles, voici ce que je fais:git add . -A
pour supprimer tous les fichiers.git add .
. Git devrait voir que les fichiers sont renommés.Vous pouvez maintenant valider en indiquant que vous avez modifié la capitalisation du nom de fichier.
la source
Les noms de fichiers sous OS X ne sont pas sensibles à la casse (par défaut). Il s'agit plus d'un problème de système d'exploitation que d'un problème Git. Si vous supprimez et lisez le fichier, vous devriez obtenir ce que vous voulez, ou le renommer en quelque chose d'autre, puis le renommer.
la source
git clone
le repo sur un système Linux, renommer les fichiers et les valider juste pour cette situation (si vous avez un système Linux à portée de main).git rm --cached fileorfolder
pour supprimer le fichier ou le dossier de git sans supprimer le fichier ou le dossier du système de fichiers. Ensuite, vous pouvez simplement ajouter à nouveau le fichier ou le dossier avecgit add fileorfolder
.Réglez
ignorecase
surfalse
in git configComme le message d'origine 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 forcer renommage depuis Git. IMO, je préfère changer la capitalisation de mon IDE / éditeur et m'assurer que je configure correctement Git pour récupérer le changement de nom.
Par défaut, un modèle Git est défini pour ignorer la casse (insensible à la casse Git). Pour vérifier que vous disposez du 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 à Git s'il faut récupérer une valeur-clé de configuration à partir de votre configuration de référentiel Git locale ou globale. Par exemple, si vous souhaitez rechercher votre clé globalecore.ignorecase
:Si cela revient
true
, assurez-vous de le définir comme:(Assurez-vous que vous disposez des autorisations appropriées pour modifier global.) Et vous l'avez; maintenant votre installation Git n'ignorerait pas les majuscules et les traiterait comme des changements.
À 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
fichier local .la source
git config --global --get core.ignorecase
ne retourne rien. Est-cetrue
?? car après l'avoir défini,false
il retourne false (Windows 10)git mv
). Je suppose également que par défaut, il est considéré comme vrai (c'est-à-dire qu'il ignore la casse). Soit cela, soit il correspond à la stratégie du système d'exploitation pour la casse du nom de fichier.Vous pouvez ouvrir le répertoire ".git" puis éditer le fichier "config". Sous "[core]", définissez "ignorecase = true" et vous avez terminé;)
la source
Pour regrouper des
git mv
fichiers en minuscules sur macOS:Il minuscule tous les fichiers d'un dossier.
la source
Cet extrait Python mettra
git mv --force
tous les fichiers d'un répertoire en minuscules. Par exemple, foo / Bar.js deviendra foo / bar.js viagit mv foo/Bar.js foo/bar.js --force
.Modifiez-le à votre guise. Je pensais juste que je partagerais :)
la source
Exemple de travail:
la source