J'ai changé quelques noms de fichiers en décapitalisant la première lettre, comme dans Name.jpg
en name.jpg
. Git ne reconnaît pas ces modifications et j'ai dû supprimer les fichiers et les télécharger à nouveau. Existe-t-il un moyen pour Git de tenir compte de la casse lors de la vérification des modifications de noms de fichiers? Je n'ai apporté aucune modification au fichier lui-même.
Vous pouvez utiliser git mv :
git mv -f OldFileNameCase newfilenamecase
Git a un paramètre de configuration qui lui indique s'il doit être sensible à la casse ou non: core.ignorecase
. Pour indiquer à Git qu'il est sensible à la casse, définissez simplement ce paramètre sur false
:
git config core.ignorecase false
À partir de la git config
documentation :
core.ignorecase
Si la valeur est true, cette option active diverses solutions permettant à git de mieux fonctionner sur des systèmes de fichiers ne respectant pas la casse, comme FAT. Par exemple, si une liste de répertoires trouve
makefile
lorsque git s'attend àMakefile
, git supposera qu'il s'agit bien du même fichier et continuera à s'en souvenir en tant queMakefile
.La valeur par défaut est false, sauf que git-clone (1) ou git-init (1) sondera et définira
core.ignorecase
true si cela est approprié lors de la création du référentiel. .
Les deux systèmes d’exploitation les plus répandus dont je connais les systèmes de fichiers respectant la casse sont:
En utilisant SourceTree, j'ai pu faire tout cela à partir de l'interface utilisateur.
FILE.ext
en whatever.ext
whatever.ext
en file.ext
C'est un peu fastidieux, mais si vous avez seulement besoin de le faire pour quelques fichiers, c'est assez rapide
Voici ce que j'ai fait sur OS X:
git mv File file.tmp
git mv file.tmp file
Deux étapes parce que sinon, j'ai une erreur "le fichier existe". Peut-être que cela peut être fait en une étape en ajoutant --cached
ou tel.
Sous OSX, pour éviter ce problème et éviter d’autres problèmes de développement sur un système de fichiers ne respectant pas la casse, vous pouvez utiliser Utilitaire de disque pour créer un cas sensible lecteur virtuel/image disque.
Exécutez l'utilitaire de disque, créez une nouvelle image de disque et utilisez les paramètres suivants (ou modifiez-les à votre guise, tout en respectant la casse):
Assurez-vous de dire à git qu'il s'agit maintenant d'un système de fichiers sensible à la casse:
git config core.ignorecase false
Il peut parfois être utile de temporairement changer la sensibilité de Git à la casse. Deux méthodes possibles: -
Méthode 1 (modification de 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 commande checkout
. Ou plus généralement: _git -c core.ignorecase=
_ <<true or false>>
<<command>>
. (Nous remercions VonC de l'avoir suggéré dans les commentaires.)
Méthode 2 (modification de la sensibilité à la casse pour plusieurs commandes) :
Pour modifier le paramètre plus longtemps (par exemple, si plusieurs commandes doivent être exécutées avant de le rétablir):
git config core.ignorecase
_ (cela retourne le paramètre actuel, par exemple false
).git config core.ignorecase
_ <<true or false>>
- définissez le nouveau paramètre souhaité.git config core.ignorecase
_ <<false or true>>
- remet la valeur de configuration à son réglage précédent.1) renommer le fichier Name.jpg
en name1.jpg
2) valider le fichier supprimé Name.jpg
3) renommer le fichier name1.jpg
en name.jpg
4) ajouter le fichier name.jpg
au dernier commit
git add
git commit --amend
J'ai essayé les solutions suivantes des autres réponses et elles n'ont pas fonctionné:
Si votre référentiel est hébergé à distance (GitHub, GitLab, BitBucket), vous pouvez renommer le fichier sur Origin (GitHub.com) et le forcer à le renommer de manière descendante.
Les instructions ci-dessous se rapportent à GitHub, mais l’idée générale qui les sous-tend devrait s’appliquer à n’importe quelle plate-forme d’hébergement de référentiels à distance. N'oubliez pas que le type de fichier que vous essayez de renommer est important, qu'il s'agisse d'un type de fichier que GitHub considère comme éditable (code, texte, etc.) ou non (image, binaire, etc.) dans le navigateur.
branchname
" est sélectionné et cliquez sur le bouton "Valider les modifications".branchname
" est sélectionné et cliquez sur le bouton "Valider les modifications".Semblable à la réponse de @ Sijmen, c’est ce qui a fonctionné pour moi sur OSX lorsque renomme un répertoire (inspiré par this réponse d’un autre poster):
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îtrait 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
J'ai utilisé ces étapes suivantes:
git rm -r --cached .
git add --all .
git commit -a -m "Versioning untracked files"
git Push Origin master
Pour moi, c'est une solution simple
Mac OSX High Sierra 10.13 corrige cela quelque peu. Créez simplement une partition APFS virtuelle pour vos projets git. Par défaut, elle n’a aucune limite de taille et ne prend pas d’espace.
Sensitive
git
et ln -s /Volumes/Sensitive/git /Users/johndoe/git
Votre lecteur sera dans /Volumes/Sensitive/
J'ai fait face à ce problème plusieurs fois sur MacOS. Git est sensible à la casse, mais Mac ne conserve que la casse.
Quelqu'un valide un fichier: Foobar.Java
et décide de le renommer au bout de quelques jours en FooBar.Java
. Lorsque vous extrayez le dernier code, il échoue avec The following untracked working tree files would be overwritten by checkout...
Le seul moyen fiable que j'ai vu de corriger cela est:
git rm Foobar.Java
git commit -m 'TEMP COMMIT!!'
git rebase --continue
git rebase -i HEAD~2
et drop
le TEMP COMMIT!!
FooBar.Java
Lorsque vous avez renommé de nombreux fichiers et que certains ne sont que des changements de boîtier, il est difficile de vous rappeler lequel. manuellement "déplacer" le fichier peut être un travail fastidieux. Donc, ce que je ferais pendant mes tâches de changement de nom de fichier est:
Cela résoudra tous les problèmes sans chercher à savoir quels fichiers ou dossiers vous avez renommés.
Si rien ne fonctionne, utilisez git rm filename pour supprimer le fichier du disque et le rajouter.