343 votes

Modifications non gérées laissées après git reset --hard

Après git reset --hard , git status me donne des fichiers dans le Changes not staged for commit: section.

J'ai aussi essayé git reset . , git checkout -- . y git checkout-index -f -a en vain.

Alors, comment puis-je me débarrasser de ces changements non gérés ?

Cela semble toucher uniquement les fichiers de projet Visual Studio. C'est bizarre. Voir ce collage : http://pastebin.com/eFZwPn9Z . Ce qui est spécial avec ces fichiers, c'est que dans .gitattributes j'ai :

*.sln        eol=crlf
*.vcproj     eol=crlf
*.vcxproj*   eol=crlf

Aussi, autocrlf est définie comme fausse dans mon système global .gitconfig . Cela pourrait-il être pertinent ?

0 votes

Avez-vous appliqué ces commandes depuis la racine du référentiel ? Notez . correspond au répertoire courant et non au répertoire racine

1 votes

Je les ai fait à partir du dépôt Root en effet.

0 votes

Quel est votre git version ? Soit vous faites une erreur stupide, soit vous avez une ancienne version qui présente des bogues ?

5voto

John Hunt Points 1024

Aucune de ces méthodes n'a fonctionné pour moi, la seule solution était de détruire le dépôt complet et de le cloner à nouveau. Cela inclut le stockage, la réinitialisation, l'ajout puis la réinitialisation, les paramètres clrf, la sensibilité à la casse, etc. Sigh

4voto

Ohar Points 117

Vérifiez votre .gitattributes .

Dans mon cas, j'ai *.js text eol=lf dans celui-ci et l'option git core.autocrlf était true .

Cela m'amène à la situation où git autoconvertit les fins de lignes de mes fichiers et m'empêche de les corriger et même de git reset --hard HEAD n'a rien fait.

Je le répare en commentant *.js text eol=lf dans mon .gitattributes et l'a décommenté après.

On dirait que c'est juste de la magie de Git.

2voto

Sergei Points 35

Essayez simplement de git restore .

C'est ce que dit git et cela fonctionne.

2voto

mrfelis Points 606

Je crois qu'il y a un problème avec git pour Windows où git écrit aléatoirement les mauvaises fins de lignes lors du checkout et la seule solution est de checkoutter une autre branche et de forcer git à ignorer les changements. Ensuite, vérifiez la branche sur laquelle vous voulez réellement travailler.

git checkout master -f
git checkout <your branch>

N'oubliez pas que cette opération annulera toutes les modifications que vous avez pu apporter intentionnellement. Ne procédez de la sorte que si vous rencontrez ce problème immédiatement après le passage à la caisse.

Edit : J'ai peut-être eu de la chance la première fois. Il s'avère que j'ai été mordu à nouveau après avoir changé de branche. Il s'est avéré que les fichiers que git signalait comme modifiés après avoir changé de branche changeaient. (Apparemment parce que git n'appliquait pas correctement la fin de ligne CRLF aux fichiers).

J'ai mis à jour la dernière version de git pour Windows et j'espère que le problème a disparu.

1voto

Honey Points 9108

J'ai eu le même problème. J'ai fait git reset --hard HEAD mais à chaque fois que je l'ai fait git status Je voyais certains fichiers comme modifiés.

Ma solution était relativement simple. J'ai simplement fermé mon IDE (ici Xcode) et fermé ma ligne de commande (ici terminal sur mon Mac OS) et j'ai réessayé et ça a marché.

Pourtant, je n'ai jamais pu trouver l'origine du problème.

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