Comment modifier les noms de fichiers uniquement en respectant la casse dans Git?

J'ai changé le nom de plusieurs fichiers en scindant 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 de rendre git sensible à la casse lors de la vérification des modifications de noms de fichiers? Je n'ai apporté aucune modification au fichier lui-même.

930
16 июля '13 в 20:41 2013-07-16 20:41 Gil Shulman a demandé le 16 juillet '13 à 20:41 2013-07-16 20:41
@ 11 réponses

Vous pouvez utiliser git mv :

 git mv -f OldFileNameCase newfilenamecase 
1144
03 янв. Répondu par Keith Smiley le 03 janvier 2014-01-03 18:57 14 à 18:57 2014-01-03 18:57

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

 git config core.ignorecase false 

La documentation

Dans la documentation de git config :

border=0

core.ignorecase

Si la valeur est true, cette option vous permet d'utiliser diverses solutions de contournement afin que Git fonctionne mieux sur les systèmes de fichiers non sensibles à la casse, tels que FAT. Par exemple, si la liste de répertoires détecte un fichier makefile , lorsque Git attend un fichier makefile , Git supposera qu'il s'agit bien du même fichier et continuera à s'en souvenir en tant que fichier makefile .

La valeur par défaut est false, sauf que git -clone (1) ou git -init (1) vérifiera et définira core.ignorecase true si nécessaire lors de la création d'un référentiel.

Systèmes de fichiers insensibles à la casse

Les deux systèmes d'exploitation les plus répandus que je connais ne possèdent pas de système de fichiers respectueux de la casse:

  • pour les fenêtres
  • OS X
754
17 июля '13 в 1:52 2013-07-17 01:52 la réponse est donnée par user456814 le 17 juillet '13 à 1:52 2013-07-17 01:52

Voici ce que j'ai fait sur OS X:

 git mv File file.tmp git mv file.tmp file 

Deux étapes, sinon, je reçois une erreur "le fichier existe". Peut-être que cela peut être fait en une étape en ajoutant --cached ou tel.

93
13 нояб. Réponse donnée par Sijmen Mulder le 13 novembre 2013-11-13 17:27 '13 à 17:27 2013-11-13 17:27

En utilisant SourceTree, j'ai pu faire tout cela à partir de l'interface utilisateur.

  • Renommez FILE.ext en FILE.ext
  • Scène
  • Maintenant, renommez FILE.ext en FILE.ext
  • Répétez ce fichier à nouveau.

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

87
28 окт. réponse donnée par Chris Barr le 28 octobre 2016-10-28 17:40 '16 à 17h40 2016-10-28 17:40

Sous OSX, vous pouvez utiliser Utilitaire de disque pour créer une image de disque dur / une image de disque afin d'éviter ce problème et d'éviter d'autres problèmes liés au développement dans le système de fichiers sans insensibilité à la casse.

Exécutez l'utilitaire de disque, créez une nouvelle image de disque et utilisez les paramètres suivants (ou modifiez-la à votre guise, mais enregistrez-la en respectant la casse):

2019

37
03 окт. réponse donnée par l' utilisateur1821510 oct 03. 2014-10-03 22:18 14 à 22h18 2014-10-03 22:18

Parfois, il est utile de changer temporairement la sensibilité à la casse dans Git. Deux méthodes possibles:

Méthode 1:

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>> . (Merci à VonC pour l'avoir suggéré dans les commentaires.)

Méthode 2:

Pour modifier un paramètre pendant une période plus longue (par exemple, si vous devez exécuter plusieurs commandes avant de le modifier à nouveau):

  1. git config core.ignorecase (renvoie les paramètres actuels, par exemple, false ).
  2. git config core.ignorecase <<true or false>> - définit le nouveau paramètre souhaité.
  3. ... Lancer plusieurs autres commandes ...
  4. git config core.ignorecase <<false or true>> - renvoie la valeur de configuration à la valeur précédente.
15
10 июля '18 в 14:05 2018-07-10 14:05 a répondu à Steve Chambers le 10 juillet '18 à 14h05 . 2018-07-10 14h05

1) Renommez le fichier name1.jpg en name1.jpg

2) Name.jpg fichier supprimé Name.jpg

3) renommer le fichier name1.jpg en Name.jpg

4) ajoutez le fichier Name.jpg ajouté au commit précédent

 git add git commit --amend 
14
03 окт. réponse donnée razon 03 oct. 2016-10-03 22:13 16 à 22h13 2016-10-03 22:13

J'ai essayé les solutions suivantes 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 dans le source (GitHub.com) et forcer le renommage du fichier de haut en bas.

Les instructions ci-dessous dépendent du type de fichier que vous essayez de renommer, c’est-à-dire du type de fichier que GitHub considère comme éditable (code, texte, etc.) ou non éditable (image, binaire, etc.) dans un navigateur. .

  1. Visitez GitHub.com
  2. Accédez à votre référentiel sur GitHub.com et sélectionnez la branche dans laquelle vous travaillez.
  3. A l'aide de l'outil de navigation de fichier de site, naviguez jusqu'au fichier que vous allez renommer.
  4. GitHub vous permet d'éditer un fichier dans un navigateur?
    • a.) éditable
      1. Cliquez sur l'icône "Modifier ce fichier" (elle ressemble à un crayon)
      2. Changer le nom du fichier dans l'entrée du nom du fichier texte
    • b) non éditable
      1. Ouvrez le bouton "Télécharger" dans un nouvel onglet et enregistrez le fichier sur votre ordinateur.
      2. Renommez le fichier téléchargé
      3. Sur l'onglet précédent sur GitHub.com, cliquez sur l'icône "Supprimer ce fichier" (cela ressemble à une corbeille)
      4. Assurez-vous que le bouton radio "Écrire directement dans les branches" est sélectionné et cliquez sur le bouton "Valider les modifications".
      5. Dans le même répertoire sur GitHub.com, cliquez sur "Télécharger des fichiers".
      6. Téléchargez le fichier renommé à partir de votre ordinateur
  5. Assurez-vous que le bouton radio "Écrire directement dans les branches" est sélectionné et cliquez sur le bouton "Valider les modifications".
  6. Localement, émettre / recevoir / tirer une branche
  7. Est fait
8
31 окт. la réponse est donnée par gmeben le 31 octobre 2017-10-31 21:22 '17 à 21:22 2017-10-31 21:22

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.

  1. Dans l'Utilitaire de disque, cliquez sur le bouton + lorsque le disque conteneur est sélectionné.
  2. Sélectionnez APFS (-s obligatoire) dans le format
  3. Appelez ça Sensitive
  4. profit
  5. Facultatif: Créez un dossier dans Sensitive avec le nom git et ln -s/Volumes/Sensitive/git/Users/johndoe/git

Votre lecteur sera dans /Volumes/Sensitive/

2019

J'ai rencontré ce problème plusieurs fois sous MacOS. Git est sensible à la casse, mais Mac ne conserve que la casse.

Quelqu'un corrige le fichier: Foobar.java et Foobar.java après quelques jours de le renommer en Foobar.java . Lorsque vous extrayez le dernier code, le The following untracked working tree files would be overwritten by checkout... échoue The following untracked working tree files would be overwritten by checkout...

Le seul moyen fiable que j'ai vu ce correctif est:

  • git rm Foobar.java
  • Sécurisez le avec un message que vous ne pouvez pas ignorer git commit -m 'TEMP COMMIT!!'
  • Traîné
  • Cela provoquera un conflit qui vous obligera à fusionner le conflit, car votre modification l'a supprimé, mais l'autre modification a été renommée (d'où le problème).
    • Acceptez votre modification, qui est "supprimer"
    • git rebase --continue
  • Maintenant, laissez votre solution de contournement git rebase -i HEAD~2 et drop TEMP COMMIT!!
  • Confirmez que le fichier s'appelle maintenant Foobar.java
3
05 авг. Réponse donnée par Ashwin Jayaprakash 05 août 2016-08-05 20:23 '16 à 20:23 2016-08-05 20:23

Lorsque vous avez renommé de nombreux fichiers et que certains d’entre eux ne font que remplacer le cas, il est difficile de vous rappeler de quoi il s’agit. manuellement "relocalisation git", le fichier peut être très utile. Alors, que ferais-je dans le processus de modification du nom de fichier, procédez comme suit:

  • supprimer tous les fichiers et dossiers sans git dans un autre dossier / référentiel.
  • corrige le dossier git vide actuel (il sera affiché lorsque tous les fichiers seront supprimés).
  • rajoutez tous les fichiers dans le dossier source de git / repository.
  • corrige le dossier git actuel non vide.

Cela éliminera tous les problèmes en n'essayant pas de déterminer les fichiers ou dossiers que vous avez renommés.

2
29 апр. Réponse donnée par Ricardo Virtudazo Jr le 29 avril 2017-04-29 14:00 17 à 14 heures 2017-04-29 14:00

Autres questions sur les balises ou poser une question