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.
Réponses
Trop de publicités?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.
- Visitez GitHub.com
- Naviguez vers votre dépôt sur GitHub.com et sélectionnez la branche dans laquelle vous travaillez.
- À l'aide de l'outil de navigation des fichiers du site, accédez au fichier que vous souhaitez renommer.
- GitHub vous permet-il de modifier le fichier dans le navigateur ?
- a.) Modifiable
- Cliquez sur l'icône "Modifier ce fichier" (elle ressemble à un crayon).
- Modifiez le nom du fichier dans la zone de saisie du nom du fichier.
- b.) Non modifiable
- Ouvrez le bouton "Télécharger" dans un nouvel onglet et enregistrez le fichier sur votre ordinateur.
- Renommer le fichier téléchargé
- Dans l'onglet précédent sur GitHub.com, cliquez sur l'icône "Supprimer ce fichier" (elle ressemble à une poubelle)
- 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". - Dans le même répertoire sur GitHub.com, cliquez sur le bouton "Télécharger les fichiers".
- Téléchargez le fichier renommé depuis votre ordinateur
- a.) Modifiable
- 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". - Localement, checkout/fetch/pull la branche
- Terminé
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.
- Dans l'Utilitaire de disque, cliquez sur le bouton + lorsque le disque du conteneur est sélectionné.
- Sélectionnez APFS (sensible à la casse) sous le format
- Nommez-le
Sensitive
- Profit
- Facultatif : Créez un dossier dans Sensitive appelé
git
yln -s /Volumes/Sensitive/git /Users/johndoe/git
Votre lecteur sera dans /Volumes/Sensitive/
Comment valider les changements de noms de fichiers en respectant la casse dans Git ?
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 :
- supprimer tous les fichiers non-git et les placer dans un autre dossier/dépôt.
- commettre le dossier git vide actuel (cela montrera que tous les fichiers ont été supprimés).
- ajouter tous les fichiers dans le dossier/dépôt git original.
- 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.
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 :
git rm Foobar.java
- Engagez-le avec un message que vous ne pouvez pas manquer
git commit -m 'TEMP COMMIT!!'
- Tirer
- 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).
- Acceptez votre changement, c'est-à-dire la "suppression".
git rebase --continue
- Déposez maintenant votre solution de rechange
git rebase -i HEAD~2
ydrop
elTEMP COMMIT!!
- Confirmez que le fichier s'appelle maintenant
FooBar.java
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
Duplicata possible de Git : Changement de la capitalisation des noms de fichiers
0 votes
@nif Je voulais juste ajouter (quelques années plus tard ;) que HFS peut mais il n'est pas sensible à la casse par défaut. J'ai une partition séparée de 65 Go formatée avec un HFS sensible à la casse, que j'utilise pour mes fichiers de données.
git
copies de travail. Ça m'évite de perdre la tête, je dois l'admettre...