Question Comment est-ce que je commets des changements de nom de fichier uniquement sensibles à la casse dans Git?


J'ai changé quelques noms de fichiers en décapitalisant la première lettre, comme dans Name.jpg à name.jpg. Git ne reconnaît pas ces changements et j'ai dû supprimer les fichiers et les télécharger à nouveau. Est-il possible que Git puisse être sensible à la casse lors de la recherche de changements dans les noms de fichiers? Je n'ai apporté aucune modification au fichier lui-même.


831
2017-07-16 17:41


origine


Réponses:


Vous pouvez utiliser git mv:

git mv -f OldFileNameCase newfilenamecase

1055
2018-01-03 15:57



Git a un paramètre de configuration qui lui indique s'il doit être sensible à la casse ou insensible: core.ignorecase. Pour indiquer à Git d'être sensible à la casse, réglez simplement ce paramètre sur false:

git config core.ignorecase false

Documentation

Du git config Documentation:

core.ignorecase

Si la valeur est true, cette option permet différentes solutions de contournement pour permettre à git de mieux fonctionner sur les systèmes de fichiers non sensibles à la casse, tels que FAT. Par exemple, si une liste de répertoires trouve makefile quand git attend Makefile, git supposera que c'est vraiment le même fichier, et continue à s'en souvenir Makefile.

La valeur par défaut est false, sauf git-clone (1) ou git-init (1) va sonder et définir core.ignorecase true si approprié lorsque le référentiel est créé.

Systèmes de fichiers insensibles à la casse

Les deux systèmes d'exploitation les plus populaires qui ont des systèmes de fichiers insensibles à la casse que je connais sont

  • les fenêtres
  • OS X

673
2017-07-16 22:52



C'est 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 un "fichier existe" erreur. Peut-être que cela peut être fait en une étape en ajoutant --cached ou tel.


83
2017-11-13 14:27



En utilisant SourceTree j'ai été capable de faire tout cela à partir de l'interface utilisateur

  • Renommer FILE.ext à whatever.ext
  • Mettre en scène ce fichier
  • Renommer maintenant whatever.ext à file.ext
  • Étape que fichier à nouveau

C'est un peu fastidieux, mais si vous n'avez besoin que de quelques fichiers, c'est assez rapide


65
2017-10-28 14:40



Sous OSX, pour éviter ce problème et éviter d'autres problèmes de développement sur un système de fichiers insensible à la casse, vous pouvez utiliser Utilitaire de disque pour créer un cas sensible conduite virtuelle / 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, tout en conservant 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

36
2017-10-03 19:18



1) renommer le fichier Name.jpg à name1.jpg

2) valider le fichier supprimé Name.jpg

3) renommer le fichier name1.jpg à name.jpg

4) ammend fichier ajouté name.jpg au commit précédent

git add
git commit --amend

12
2017-10-03 19:13



J'ai essayé les solutions suivantes à partir des autres réponses et elles n'ont pas fonctionné:

Si votre référentiel est hébergé sur GitHub comme le mien, vous pouvez renommer le fichier sur l'origine (GitHub.com) et forcer le nom du fichier de manière descendante. Voici ce que j'ai fait:

  1. Visitez GitHub.com
  2. Accédez à votre référentiel sur GitHub.com et sélectionnez la branche dans laquelle vous travaillez
  3. Accédez au fichier que vous avez l'intention de renommer à l'aide de l'outil de navigation de fichiers du site.
  4. Cliquez sur l'icône "Modifier ce fichier" (elle ressemble à un crayon)
  5. Changer le nom de fichier dans la saisie de texte du nom de fichier
  6. Assurez-vous que "Commit directement au branchname branche "est sélectionné
  7. Cliquez sur le bouton "Valider les modifications"
  8. Localement, extraire / tirer / aller chercher la branche
  9. Terminé

5
2017-10-31 18:22



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 commet un fichier: Foobar.java et après quelques jours décide de le renommer en FooBar.java. Lorsque vous tirez le dernier code, il échoue avec The following untracked working tree files would be overwritten by checkout...

La seule façon fiable que j'ai vu qui corrige ceci est:

  1. git rm Foobar.java
  2. Engagez-le avec un message que vous ne pouvez pas manquer git commit -m 'TEMP COMMIT!!'
  3. tirer
  4. Cela va apparaître un conflit vous forçant à fusionner le conflit - parce que votre changement l'a supprimé, mais l'autre changement a été renommé (d'où le problème)
    1. Acceptez votre changement qui est la 'suppression'
    2. git rebase --continue
  5. Maintenant, déposez votre solution de contournement git rebase -i HEAD~2 et drop la TEMP COMMIT!!
  6. Confirmez que le fichier est maintenant appelé FooBar.java

3
2017-08-05 17:23



Parfois, il est utile de temporairement changer la sensibilité à la casse de Git. Voici deux méthodes possibles: -

Méthode 1:

git -c core.ignorecase=  <<true or false>>  <<command>> peut être utilisé pour modifier la sensibilité à la casse pour une seule commande. Par exemple: git -c core.ignorecase=true checkout mybranch. (Merci à VonC pour avoir suggéré cela dans les commentaires.)

Méthode 2:

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

  1. git config core.ignorecase (Ceci retourne le réglage actuel, par ex. false).
  2. git config core.ignorecase  <<true or false>> - Définissez le nouveau réglage souhaité.
  3. ... Exécuter plusieurs autres commandes ...
  4. git config core.ignorecase  <<false or true>> - remettre la valeur de configuration à son réglage précédent.

2
2017-07-10 11:05



Lorsque vous avez renommé beaucoup de fichiers et que certains d'entre eux ne sont qu'un changement de boîtier, il est difficile de se souvenir de qui est quoi. manuellement "git moving" le fichier peut être un peu de travail. Donc, ce que je ferais pendant mes tâches de changement de nom de fichier sont:

  1. Supprimez tous les fichiers non-git et le dossier dans un dossier / référentiel différent.
  2. commettre le dossier git vide actuel (cela montrera que tous les fichiers ont été supprimés.)
  3. ajoutez tous les fichiers dans le dossier / référentiel git original.
  4. commettre le dossier git non vide actuel.

Cela permettra de résoudre tous les problèmes sans essayer de déterminer quels fichiers ou dossiers vous avez renommés.


1
2018-04-29 11:00



Mac OSX High Sierra 10.13 résout un peu cela. Créez simplement une partition APFS virtuelle pour vos projets git, par défaut, elle n'a pas de limite de taille et ne prend pas d'espace.

  1. Dans Utilitaire de disque, cliquez sur le bouton + lorsque le disque Conteneur est sélectionné
  2. Sélectionnez APFS (sensible à la casse) sous le format
  3. Nomme le git
  4. Profit

Votre lecteur sera en /Volumes/git

enter image description here

Comment est-ce que je commets des changements de nom de fichier uniquement sensibles à la casse dans Git?


0
2018-03-06 15:01