Après avoir vu ce qui suit à partir de la ligne de commande:
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
J'essaye d'annuler mes modifications en tapant la commande:
git checkout -- index.htm
mais quand je réexécute git status, il a exactement la même apparence. La caisse ne semble pas fonctionner. Est-ce que je fais quelque chose de mal? J'utilise GIT 1.6.1.2 sur windows / cygwin.
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
git checkout HEAD -- index.htm
(extraire à partir du dernier état validé, au lieu de récupérer à partir de l'index) fonctionne?git checkout HEAD -- index.htm
travaillé pour moi!Réponses:
Cela me dérange depuis un certain temps, presque tous les dépôts que j'ai vérifiés avaient des modifications que je ne pouvais pas annuler. Pour faire court, j'ai essayé tout ce qui précède, rien n'a fonctionné. Voici ce que j'ai fait pour que les choses reviennent à la normale (sur un Mac):
la source
Voici mon expérience, définissez les variables suivantes dans
.git/config
:puis exécutez
$ git checkout HEAD .
, et cela fonctionne. mais$ git checkout -- .
non, étrange!* git version 1.9.3
la source
Quels changements
git diff
apparaissent sur le fichier? Sur Windows, j'ai vu des problèmes avec les fins de ligne provoquant des problèmes comme celui-ci. Dans ce cas, regardez les paramètres dont vous disposez pourgit config core.autocrlf
etgit config core.safecrlf
. Il y a de la documentation pour ces paramètres ici .Je dirais que si vous utilisez
git svn
pour l'intégration avec subversion, assurez-vous qu'ilautocrlf
est désactivé. D'après ce que je peux dire, il est juste cassé dans cette configuration et cela fait penser à la plupart des outils que les fichiers ont été modifiés, lorsque vous avez fait uncheckout
pour annuler les modifications.Si vous rencontrez un problème là où vous le faites
git checkout
, puisgit status
affichez que le fichier est toujours modifié etgit diff
affichez que le fichier est modifié sur chaque ligne du fichier, c'est le problème que vous rencontrez.la source
Je pense que tu dois passer
-f
Depuis la page de manuel (
man git-checkout
, GIT-CHECKOUT (1)):Par exemple, annulez les modifications sur la branche actuelle et passez à une autre branche:
la source
-f
à la caisse - <nom du fichier> commegit checkout -f -- filename
-f
git checkout -f master
jeté "Déjà sur 'maître'" mais les changements ont disparu.Il peut s'agir de fins de ligne, comme le suggère @ 1800-information, mais une autre possibilité est que la différence (qui vous empêche de restaurer ces fichiers avec une commande d'extraction) est celle du mode fichier. Voilà ce qui m'est arrivé. Sur ma version de git, vous pouvez le découvrir en utilisant
Et il vous montrera les changements de mode de fichier. Cependant, cela ne vous permettra toujours pas de les rétablir en utilisant l'extraction, même avec l'option -f. Pour cette utilisation soit
ou modifiez votre git .config dans votre éditeur de texte en ajoutant
Après avoir fait cela, vous pouvez utiliser
et le fichier devrait disparaître.
(J'ai obtenu tout cela dans les réponses à Comment faire pour faire ignorer les changements de mode git (chmod)? Et mettre à jour les autorisations de fichier uniquement dans git )
la source
Êtes-vous sur OSX ou Windows? Si tel est le cas, le problème est probablement d'avoir deux fichiers du même nom, avec une casse différente. par exemple. index.htm et Index.htm
Windows, et par défaut OSX, utilise un système de fichiers insensible à la casse, qui entre en conflit avec le git sensible à la casse.
la source
J'ai eu ce problème et après avoir essayé tout ce qui précède, rien n'a fonctionné.
Ce qui a fonctionné pour moi, c'est de supprimer le répertoire dans lequel se trouvait le fichier, puis de faire
git status
et de s'assurer que tous les fichiers de ce répertoire sont désormais marqués comme supprimés. Après cela, je l'ai simplement faitgit checkout -f
et tout était revenu à la normale.la source
Je travaillais sur un
libGDX
projetAndroid Studio
et je voulais abandonner tous les changements que j'ai faits, et rien ne fonctionnait pour moi, la solution que j'ai trouvée était de valider tous les changements dans une nouvelle branchepuis vous pouvez supprimer la
TRASH
branche si vous le souhaitez.la source
J'ai eu le même problème, rien des commentaires ci-dessus n'a fonctionné. Il s'est avéré que mon système de fichiers n'est pas sensible à la casse (osx par défaut, mais Windows se comporte probablement de la même manière) et qu'un fichier était présent avec des majuscules et des minuscules dans le même répertoire, avec un contenu différent. Puisque sur mon ordinateur les deux noms pointaient vers le même fichier, l'état de git montrait toujours une modification, quoi que je fasse. Pour résoudre le problème:
J'ai dû supprimer l'un des fichiers d'un autre ordinateur et le pousser vers le repo
supprimer complètement la version locale entière
faire git cloner à partir de zéro
la source
J'ai eu un problème similaire, où cela ne me permettrait pas de supprimer des fichiers qui n'existent pas ou qui ont été modifiés. J'utilise Visual Studio au travail et j'ai constaté que cela se produit lors du changement de branche pendant que l'application est en cours d'exécution.
git checkout
et essayer de se débarrasser n'a pas aidé. Cela ne marcherait pas ou cela me dirait simplement que je n'ai pas la permission.Solution qui a fonctionné:
Redémarrer est une douleur, mais cela a fonctionné plus rapidement que d'essayer 100 choses.
la source
Il existe une solution simple. Si cela se produit (normalement à cause d'un arrêt inattendu de Windows ou d'un vidage de la mémoire) et que vous ne pouvez pas annuler vos modifications et même basculer entre les branches (Git dit que vous n'avez pas assez d'autorisations); dans l'
Windows
environnement àshow all hidden files and folders
partir des options de dossier. Accédez à votre répertoire GIT (devrait commencer par.git
) et supprimez le"index.lock"
fichier. Ensuite, Git devrait vous laisser faire ce que vous voulez.la source
J'ai fini par faire un
git stash
suivi d'ungit stash clean
pour m'en débarrasser. Je n'ai vu aucune configuration auto cr / lf dans .git / ou ~ / .git.la source
Dans mon cas, je ne pouvais pas annuler les modifications liées à un répertoire. par exemple, quand j'exécutais un git diff, je verrais ceci:
-Subproject commit fdcccccccccccccccccccccccccccccccccccccc +Subproject commit f1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
J'ai donc appelé ce répertoire et y ai exécuté un statut git. Il était dans un état HEAD détaché. Et puis j'ai juste couru un
git checkout master
là-dedans. Cela a arrangé les choses pour moi. Mais cela n'est pas utile pour le scénario exact demandé ici.la source
C'est une vieille question, mais qui était toujours d'actualité pour moi. Je n'ai pas trouvé ma réponse avant de poser des questions dans le bureau et j'ai découvert que le problème venait des sous-modules. Lorsqu'ils sont mis à jour et que votre propre référentiel ne reflète pas ces changements, il apparaît comme présentant des différences, la réinitialisation de la tête n'aide pas. Si tel est le cas, exécutez:
Cela devrait aider à résoudre les problèmes (dans ce cas particulier)
la source
J'ai eu un problème d'autorisations dans Windows et j'ai dû le faire
icacls containingFolder /reset /t /l /c
, puis double-cliquer sur le dossier pour récupérer mes autorisations.la source
J'avais .gitattributes avec le contenu suivant:
* text=auto eol=lf
Pour résoudre le problème, modifiez
.gitattributes
pour supprimer cette ligne qui assouplit les fins de ligne. Puisgit reset --hard HEAD
rétabli les fichiers et le.gitattributes
fichier.la source
Pour moi, ce problème est venu avec une combinaison de téléchargement d'une image Git-LFS qui a été téléchargée via Netlify CMS et servie différemment par leur gestionnaire Netlify Large Media.
Ma solution était de commenter / supprimer ces lignes de mon
~/.gitconfig
pour qu'elles ressemblent à celles ci-dessous, puis de vérifier àgit status
nouveau.OU vous pouvez probablement ajouter un filtre plus local via un
.gitconfig
dans la racine du dépôt et écraser d'une manière ou d'une autre les règles de filtrage pour lfs.J'espère que cela aidera un autre.
la source
J'ai également rencontré un problème quelque peu similaire et les étapes suivantes m'ont aidé:
J'espère que cela aide aussi d'autres personnes.
la source