11
votes

Git ne peut pas annuler des fichiers modifiés

Je veux juste revenir à un répertoire de travail propre, exactement tel qu'il était après ma dernière commission. Git se rapporte à moi une charge de modifications de fichiers que je n'ai pas faites, alors je soupçonne que c'est quelque chose à voir avec des terminaisons de ligne.

J'ai essayé tous les suspects habituels de le faire:

< code> GIT RESET --HARD GIT COMMIS -. git cachette Git Clean -FD

Peu importe ce que je fais, Statut GIT affiche toujours les mêmes fichiers que ceux ayant été modifiés. Que puis-je faire? J'ai des changements non engagés cachés dans une autre branche, donc je ne veux donc pas simplement éloigner tout, mais plutôt simplement "roulez" ma branche principale.

EDIT: SORTIE xxx

puis j'essaie ce qui est suggéré et tout ce que je pouvais trouver: xxx

Comme vous pouvez le constater, aucun changement malgré le Rollback.

Alors j'ai suivi des conseils et j'ai dirigé une différence d'ignorer tout espace, et comme soupçonné qu'il semble qu'il n'y ait aucune différence lors de l'ignorance des espaces - donc je suppose que c'était donc des terminaisons de ligne! Que puis-je faire pour résoudre ce problème? J'ai défini sur autocrilf à vrai en vain.


4 commentaires

Avez-vous essayé de demander git diff pour savoir quelle est la modification?


Oui, j'avais fait ça, c'est essentiellement dire que chaque ligne a changé, c'est pourquoi je pensais que quelque chose à voir avec les fins de la ligne. Étrange si tout mon travail est fait sur un système d'exploitation sur un ordinateur, donc pas sûr de savoir comment cela peut être arrivé


Est-ce que cela se produit même avant vous ouvrez les fichiers dans un éditeur de texte après la réinitialisation? Une fois, j'ai découvert que mon EDI était "utile" changer de ligne de ligne pour moi sans que je demande, en raison de la préférence folle que j'avais définie il y a des mois ...


Pouvez-vous poster la partie pertinente du statut GIT SORTIE ?


5 Réponses :


5
votes

Si vous voulez simplement modifier un fichier à la manière dont il était après la dernière validation, il suffit de faire un Git Checkout [Fichier] pour obtenir un fichier particulier. Mais un git réinitialiser --Hard aurait dû faire cela à l'arbre entier. Si vous pensez que ce n'est que des terminaisons de ligne, effectuez un GIT DIFF , puis un GIT DIFF-DIFF-SPACE . Si le premier diff montre des modifications et la seconde ne le fait pas, au moins vous savez que vous avez un problème de fin de ligne, auquel cas vous voudrez peut-être examiner cette description de Git et fins de ligne .


1 commentaires

Merci, ignorer l'espace n'a montré aucun diff dans des fichiers, doit donc être des terminaisons de ligne. Suivra l'article GitHub. J'espère éviter une validation spécifique pour la fixation des fins de ligne, mais devinez-vous.



4
votes

Essayez l'approche expliquée dans la section "Re-normalisant une repo" de Cette Article GitHub après Assurez-vous que vos paramètres EOL ont des valeurs raisonnables (pour votre stratégie de système d'exploitation et de repo)


2 commentaires

en effet git rm - cached -r. avant git reset --hard a travaillé pour moi


Entre les deux déclarations, je devais faire un git add -a, mais cela a travaillé sur ma fin d'aswell.



0
votes

Si GIT pense que vos fichiers sont modifiés en raison de ses tentatives visant à normaliser automatiquement les terminaisons de ligne (qui seront tristes si git diff montre des différences, mais Git Diff-In-tout- L'espace n'est pas), votre meilleure solution peut être de désactiver la modification de la ligne de fin de ligne pour votre projet. Cela fonctionne bien si votre équipe utilise toutes la même plate-forme (Windows, Linux, etc.) pour un ensemble donné de fichiers.

Pour éteindre la ligne de fin de la modification de votre projet, ouvrir ou créer .gitattributes à la racine de votre référentiel. Assurez-vous que le fichier contient cette ligne: xxx

si le fichier existait et comporte un paramètre différent pour * , tel que * auto , remplacez-le par la ligne ci-dessus.


0 commentaires

1
votes

dans mon cas ni caisse git -. ni git reset --hard ni git clean -fd. aida quelle que soit la Commande - Il y avait encore un répertoire à gauche qui a été "modifié". Donc, j'ai changé dans le répertoire particulier et exécuter Git Checkout -. à partir d'ici. Je ne sais pas exactement les raisons sous-jacentes pour lesquelles je devais d'abord changer le répertoire, mais il a étonnamment contribué à vous débarrasser de ces modifications.


1 commentaires

Merci - cela a aidé. Pourquoi de telles choses se produisent-elles toujours?



0
votes

contribuer à mon cas: Il y avait un fichier qui avait un état modifié et je n'ai pu réinitialiser ce fichier à l'aide de git reset --hard . Aucune des commandes ci-dessus m'a aidé, le fichier a juste été toujours dans l'état modifié.
Ce qui était plus intéressant, c'est que cette question a persisté même après le nouveau clone! Mais Git m'a donné un indice: XXX

Il s'est avéré que quelqu'un sur un système de fichiers sensible à une casse (Linux) avait accidentellement commis deux fichiers avec le même nom, mais dans différents cas et contenus différents . Et quand j'ai ouvert ce repo sur un système de fichiers insensé (MacOS, Windows), Git pensait que c'est le même fichier et l'a toujours montré qu'il est "modifié" de myfile.kt à Myfile.kt ou à partir de myfile.kt à myfile.kt .

donc, je viens de supprimer un fichier non pertinent et je n'ai que sorties un.


0 commentaires