1883 votes

Comment valider les changements de noms de fichiers en respectant la casse dans Git ?

J'ai changé le nom de quelques fichiers en dé-capitalisant la première lettre, comme dans Name.jpg a name.jpg . Git ne reconnaît pas ces changements et j'ai dû supprimer les fichiers et les télécharger à nouveau. Existe-t-il un moyen pour que Git soit sensible à la casse lors de la vérification des changements dans les noms de fichiers ? Je n'ai apporté aucune modification au fichier lui-même.

5 votes

@nif ce n'est pas tout à fait correct, Git a en fait un paramètre de configuration qui contrôle si oui ou non il ignore la sensibilité à la casse.

10 votes

Ver stackoverflow.com/a/24979063/6309 : depuis git 2.0.1, un simple git mv travaux.

0 votes

23voto

gmeben Points 552

J'ai essayé les solutions suivantes tirées 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 à l'origine (GitHub.com) et forcer le renommage du fichier de manière descendante.

Les instructions ci-dessous concernent GitHub, mais l'idée générale qui les sous-tend devrait s'appliquer à n'importe quelle plateforme d'hébergement de référentiel distant. Gardez à l'esprit que le type de fichier que vous tentez de renommer est important, c'est-à-dire qu'il s'agit d'un type de fichier que GitHub considère comme modifiable (code, texte, etc.) ou non modifiable (image, binaire, etc.) dans le navigateur.

  1. Visitez GitHub.com
  2. Naviguez vers votre dépôt sur GitHub.com et sélectionnez la branche dans laquelle vous travaillez.
  3. À l'aide de l'outil de navigation des fichiers du site, accédez au fichier que vous souhaitez renommer.
  4. GitHub vous permet-il de modifier le fichier dans le navigateur ?
    • a.) Modifiable
      1. Cliquez sur l'icône "Modifier ce fichier" (elle ressemble à un crayon).
      2. Modifiez le nom du fichier dans la zone de saisie du nom du fichier.
    • b.) Non modifiable
      1. Ouvrez le bouton "Télécharger" dans un nouvel onglet et enregistrez le fichier sur votre ordinateur.
      2. Renommer le fichier téléchargé
      3. Dans l'onglet précédent sur GitHub.com, cliquez sur l'icône "Supprimer ce fichier" (elle ressemble à une poubelle)
      4. Assurez-vous que l'option "S'engager directement dans le branchname Le bouton radio "Branche" est sélectionné et cliquez sur le bouton "Valider les modifications".
      5. Dans le même répertoire sur GitHub.com, cliquez sur le bouton "Télécharger les fichiers".
      6. Téléchargez le fichier renommé depuis votre ordinateur
  5. Assurez-vous que l'option "S'engager directement dans le branchname Le bouton radio "Branche" est sélectionné et cliquez sur le bouton "Valider les modifications".
  6. Localement, checkout/fetch/pull la branche
  7. Terminé

15voto

AmerllicA Points 1

Avec la commande suivante :

git config --global  core.ignorecase false

Vous pouvez configurer globalement votre système git pour qu'il respecte la casse pour les noms de fichiers et de dossiers.

10voto

Ray Points 67

Mac OSX High Sierra 10.13 corrige quelque peu ce problème. 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 l'Utilitaire de disque, cliquez sur le bouton + lorsque le disque du conteneur est sélectionné.
  2. Sélectionnez APFS (sensible à la casse) sous le format
  3. Nommez-le Sensitive
  4. Profit
  5. Facultatif : Créez un dossier dans Sensitive appelé git y ln -s /Volumes/Sensitive/git /Users/johndoe/git

Votre lecteur sera dans /Volumes/Sensitive/

enter image description here

Comment valider les changements de noms de fichiers en respectant la casse dans Git ?

4voto

Lorsque vous avez fait beaucoup de renommage de fichiers et que certains d'entre eux ne sont qu'un changement de casse, il est difficile de se souvenir de ce qui est quoi. Donc ce que je ferais pendant mes tâches de changement de nom de fichier sont :

  1. supprimer tous les fichiers non-git et les placer dans un autre dossier/dépôt.
  2. commettre le dossier git vide actuel (cela montrera que tous les fichiers ont été supprimés).
  3. ajouter tous les fichiers dans le dossier/dépôt git original.
  4. commettre le dossier git actuel non vide.

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

3voto

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

Quelqu'un commet un fichier : Foobar.java et après quelques jours, il décide de le renommer en FooBar.java . Quand vous tirez 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 pour résoudre ce problème 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 fera apparaître un conflit qui vous obligera à fusionner le conflit - parce que votre modification l'a supprimé, mais l'autre modification l'a renommé (d'où le problème).
    1. Acceptez votre changement, c'est-à-dire la "suppression".
    2. git rebase --continue
  5. Déposez maintenant votre solution de rechange git rebase -i HEAD~2 y drop el TEMP COMMIT!!
  6. Confirmez que le fichier s'appelle maintenant FooBar.java

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X