Pour une raison quelconque, lorsque j'ai initialement fait une extraction du référentiel pour un de mes projets git, j'ai reçu une tonne de fichiers dans ma copie de travail qui n'ont pas été modifiés, mais continuent de s'afficher dans ma unstaged changes
région.
J'utilise Git Gui sur Windows XP, et quand je vais regarder le fichier pour voir ce qui a changé. Tout ce que je vois c'est:
old mode 100755
new mode 100644
Quelqu'un sait-il ce que cela signifie?
Comment puis-je extraire ces fichiers de ma liste de modifications non planifiées? (Très ennuyeux de devoir parcourir des centaines de fichiers, juste pour sélectionner les fichiers que j'ai récemment modifiés et que je veux valider).
git update-index --chmod=(+|-)x <path>
.git config --global ...
pour définir l'option dans votre fichier de configuration global.La définition
core.filemode
de false fonctionne, mais assurez-vous que les paramètres de~/.gitconfig
ne sont pas remplacés par ceux de.git/config
.la source
~/.gitconfig
fichier!git config --list --show-origin | sls filemode
ou sous Linuxgit config --list --show-origin | grep filemode
. Cela vous montrera où vous devez effectuer les ajustements.J'ai rencontré ce problème lors de la copie d'un dépôt git avec des fichiers de travail d'un ancien disque dur à quelques reprises. Le problème provient du fait que le propriétaire et les autorisations sont passés de l'ancien lecteur / machine au nouveau. Le plus long et le plus court, exécutez les commandes suivantes pour redresser les choses ( grâce à cette réponse de superutilisateur ):
L'ancienne commande résoudra en fait les différences signalées par git diff, mais révoquera votre capacité à répertorier les répertoires, donc
ls ./
échoue avecls: .: Permission denied
. Pour résoudre ce problème:La mauvaise nouvelle est que si vous avez des fichiers que vous souhaitez conserver exécutables, tels que des
.sh
scripts, vous devrez les annuler. Vous pouvez le faire avec la commande suivante pour chaque fichier:la source
git config core.filemode
est défini surtrue
, sinon les modifications d'autorisation ne seront pas détectées. J'ai également eu besoin de rafraîchir l'index git après chaque changement pour le récupérer.Cela se produit généralement lorsque le dépôt est cloné entre des machines Windows et Linux / Unix.
Dites simplement à git d'ignorer le changement de mode de fichier, voici plusieurs façons:
Config UNIQUEMENT pour le dépôt actuel:
Configuration globale:
Ajoutez ~ / .gitconfig:
Sélectionnez-en un.
la source
Il semble que vous ayez modifié certaines autorisations du répertoire. J'ai fait les étapes suivantes pour le restaurer.
la source
Vous pouvez essayer git reset --hard HEAD pour réinitialiser le référentiel à l'état par défaut attendu.
la source
git reset --hard HEAD
a parfaitement fonctionné pour moi. merciJ'ai rencontré le même problème. Et cela me sauve la vie: https://gist.github.com/jtdp/5443498
la source
Cela se produit lorsque vous extrayez et que tous les fichiers étaient exécutables dans le référentiel distant. Les rendre à nouveau exécutables ramènera tout à nouveau à la normale.
Vous devrez peut-être faire:
au lieu de cela, pour les fichiers qui n'ont pas été définis comme exécutables et qui ont été modifiés en raison de l'opération ci-dessus. Il existe une meilleure façon de le faire, mais ce n'est qu'une solution très rapide et sale.
la source
Vous pouvez utiliser la commande suivante pour modifier à nouveau votre mode de fichier.
git add --chmod=+x -- filename
Engagez-vous ensuite dans la branche.la source
Je n'avais qu'un seul fichier gênant avec les autorisations modifiées. Pour le restaurer individuellement, je l'ai simplement supprimé manuellement avec
rm <file>
, puis effectué un paiement pour extraire une nouvelle copie.Heureusement, je ne l'avais pas encore mis en scène.
Si j'avais, j'aurais pu courir
git reset -- <file>
avant de courirgit checkout -- <file>
la source
Je viens de rencontrer ce problème lorsque je diffère ma branche avec master. Git a renvoyé une erreur de «mode» lorsque je m'attendais à ce que ma branche soit identique à master. J'ai corrigé en supprimant le fichier, puis en fusionnant à nouveau le maître.
J'ai d'abord lancé le diff:
Cela a renvoyé:
J'ai ensuite exécuté ce qui suit pour corriger:
Après cela,
git diff
n'a retourné aucune différence entre ma branche et le maître.la source