J'ai changé un nom quelques fichiers par de-majuscule la première lettre, comme Name.jpg
à 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 Git d'être 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.
git
case-sensitive
git-commit
git-config
Gil Shulman
la source
la source
git mv
fonctionne.Réponses:
Vous pouvez utiliser git mv :
la source
-f
drapeau.-f
commutateur avec la dernière git (2,18) sinon vous pourriez obtenir l'fatal: destination exists
erreur.Git a un paramètre de configuration qu'il indique si d'être sensible à la casse ou insensible:
core.ignorecase
. Pour dire à Git d'être sensible à la casse, définissez simplement ce paramètre surfalse
:Documentation
De la
git config
documentation :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
la source
false
sur un système de fichiers insensible à la casse est une mauvaise idée . Ce n'est pas forcément évident. Par exemple, je viens de l'essayer sur mon Mac, pensant que cela résoudrait mes problèmes, puis j'ai renommé un fichier deproductPageCtrl.js
àProductPageCtrl.js
.git status
a vu un nouveau fichier appeléProductPageCtrl.js
mais ne pensait pas qu'ilproductPageCtrl.js
avait été supprimé. Lorsque j'ai ajouté les nouveaux fichiers, validés et poussés vers GitHub, le référentiel GitHub contenait désormais les deux fichiers même si mon référentiel local (supposément à jour) n'en avait qu'un.git mv
pour déplacer le fichier et voir comment git le gère. Si vous déplacez le fichier sans git, il n'y a rien que git puisse faire car le système de fichiers ne dit pas la vérité à git. C'est un problème de ntfs / fat / hfs et thelike et non git / linux.En utilisant SourceTree, j'ai pu tout faire à partir de l'interface utilisateur
FILE.ext
enwhatever.ext
whatever.ext
àfile.ext
C'est un peu fastidieux, mais si vous n'avez besoin de le faire que pour quelques fichiers, c'est assez rapide
la source
C'est ce que j'ai fait sur OS X:
Deux étapes car sinon j'ai eu une erreur "fichier existe". Peut-être que cela peut être fait en une seule étape en ajoutant
--cached
ou tel.la source
-f
(force) est le drapeau que vous recherchez-f
indicateur n'aide pas si le FS sous-jacent n'est pas sensible à la casse. Cependant, la solution en deux étapes a fonctionné pour moi-f
! Merci pour l'astuce-f
drapeau.git -c "core.ignorecase=false" add .
prendra en compte les fichiers dont la casse a été modifiée pour validation.Il est parfois utile de modifier temporairement la sensibilité à la casse de Git:
Méthode n ° 1 - Modifier la sensibilité à la casse pour une seule commande:
git -c core.ignorecase=true checkout mybranch
pour désactiver la sensibilité à la casse pour une seulecheckout
commande. Ou plus généralement: . (Nous remercions VonC d'avoir suggéré cela dans les commentaires.)git -c core.ignorecase=
<<true or false>>
<<command>>
Méthode n ° 2 - Modifier 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 modifier à nouveau):
git config core.ignorecase
(cela renvoie le réglage actuel, par exemplefalse
).git config core.ignorecase
<<true or false>>
- définissez le nouveau réglage souhaité.git config core.ignorecase
<<false or true>>
- remettre la valeur de configuration à son paramètre précédent.la source
git -c core.ignorecase=<true or false> checkout <<branch>>
? Rien à réinitialiser après.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 l'Utilitaire de disque pour créer une image de disque / disque virtuel sensible à la casse .
Exécutez l'utilitaire de disque, créez une nouvelle image disque et utilisez les paramètres suivants (ou modifiez comme vous le souhaitez, mais gardez-le sensible à la casse):
Assurez-vous de dire à git qu'il est maintenant sur un FS sensible à la casse:
la source
J'ai essayé les solutions suivantes à partir des autres réponses et elles n'ont pas fonctionné:
git mv filename
git rm -f filename
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 derrière elles devrait s'appliquer à toute plate-forme d'hébergement de référentiel distant. Gardez à l'esprit le type de fichier que vous essayez de renommer, c'est-à-dire s'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.
branchname
bouton radio succursale» est sélectionné et cliquez sur le bouton «Valider les modifications»branchname
bouton radio succursale» est sélectionné et cliquez sur le bouton «Valider les modifications»la source
Semblable à la réponse de @ Sijmen, c'est ce qui a fonctionné pour moi sur OSX lors du changement de nom d'un répertoire (inspiré par cette réponse d'un autre post):
Faire simplement a
git mv CSS css
donné l'erreur d'argument invalide:fatal: renaming '/static/CSS' failed: Invalid argument
peut-être parce que le système de fichiers d'OSX n'est pas sensible à la casseps BTW si vous utilisez Django, collectstatic ne reconnaîtra pas non plus la différence de casse et vous devrez également faire manuellement ce qui précède dans le répertoire racine statique
la source
1) renommer le fichier
Name.jpg
enname1.jpg
2) Valider le fichier supprimé
Name.jpg
3) renommer le fichier
name1.jpg
enname.jpg
4) Amender le fichier ajouté
name.jpg
au commit précédentla source
fatal: bad source, source=name1.jpg, destination=name.jpg
à l'étape 3. Avez-vous une suggestion? Thxgit add
.J'ai utilisé ces étapes suivantes:
Pour moi, c'est une solution simple
la source
Nous pouvons utiliser la commande git mv. Exemple ci-dessous, si nous avons renommé le fichier abcDEF.js en abcdef.js, nous pouvons exécuter la commande suivante à partir du terminal
la source
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.
Sensitive
git
etln -s /Volumes/Sensitive/git /Users/johndoe/git
Votre lecteur sera en
/Volumes/Sensitive/
Comment valider uniquement les changements de nom de fichier sensibles à la casse dans Git?
la source
J'ai rencontré ce problème plusieurs fois sur MacOS. Git est sensible à la casse mais Mac ne fait que préserver la casse.
Quelqu'un valide un fichier:
Foobar.java
et après quelques jours décide de le renommer enFooBar.java
. Lorsque vous extrayez le dernier code, il échoue avecThe 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
git commit -m 'TEMP COMMIT!!'
git rebase --continue
git rebase -i HEAD~2
etdrop
laTEMP COMMIT!!
FooBar.java
la source
Lorsque vous avez fait beaucoup de renommages de fichiers et que certains d'entre eux ne sont qu'un changement de boîtier, il est difficile de se rappeler lequel est lequel. manuellement «déplacer git» le fichier peut être un peu de travail. Donc ce que je ferais pendant mes tâches de changement de nom de fichier sont:
Cela résoudra tous les problèmes de cas sans essayer de comprendre quels fichiers ou dossiers vous avez renommé.
la source
git commmit --amend
au paragraphe 4? Sinon, il y aura un commit supplémentaire avec la suppression de tous les fichiers. Ou vous pouvez utilisergit rebase -i
avec de la courge.Si rien ne fonctionne, utilisez git rm filename pour supprimer le fichier du disque et l'ajouter à nouveau.
la source
J'ai pris la réponse @CBarr et j'ai écrit un script Python 3 pour le faire avec une liste de fichiers:
la source