142 votes

Impossible de supprimer les modifications dans Git

Après avoir vu ce qui suit sur 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'essaie d'annuler mes modifications en tapant la commande :

git checkout -- index.htm

mais quand je relance git status, c'est exactement la même chose. Le checkout ne semble pas fonctionner. Est-ce que je fais quelque chose de mal ? J'utilise GIT 1.6.1.2 sous 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

0voto

Gene Parcellano Points 464

J'ai eu un problème similaire, où il ne me permettait 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 lorsque l'on change de branche alors que l'application est en cours d'exécution.

git checkout et essayer de s'en débarrasser n'a pas aidé. Cela ne fonctionnait pas ou bien il me disait simplement que je n'avais pas la permission.

Solution qui a fonctionné :

  1. Allez dans Mode sans échec
  2. Jeter les fichiers

Le redémarrage est pénible, mais cela a fonctionné plus rapidement que d'essayer 100 choses.

0voto

Mahib Points 2018

Il existe une solution simple. Si cela se produit (normalement à la suite d'un arrêt inattendu de Windows ou d'un vidage de la mémoire) et que vous ne pouvez pas supprimer vos modifications ni même passer d'une branche à l'autre (Git dit que vous n'avez pas assez de permissions), dans la section Windows environnement show all hidden files and folders dans les options du dossier. Allez dans votre répertoire GIT (qui doit commencer par .git ) et supprimez le "index.lock" fichier. Ensuite, Git devrait vous laisser faire ce que vous voulez.

0voto

Matt H Points 3273

J'ai fini par faire un git stash suivi d'un git stash clean pour s'en débarrasser. Je n'ai pas vu de configuration automatique de cr/lf dans les fichiers .git/ ou ~/.git.

0voto

Sheetal Kaul Points 1710

Dans mon cas, je n'ai pas pu supprimer les changements liés à un répertoire. Par exemple, lorsque j'ai lancé un diff git, j'ai vu ceci : -Subproject commit fdcccccccccccccccccccccccccccccccccccccc +Subproject commit f1bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Donc j'ai appelé ce répertoire et j'ai lancé un statut git dedans. Il était dans un état détaché HEAD. Et ensuite j'ai juste lancé un git checkout master là-dedans. Ça a arrangé les choses pour moi. Mais ce n'est pas utile pour le scénario exact demandé ici.

0voto

Bradley Robinson Points 197

Il s'agit d'une vieille question, mais elle est toujours pertinente pour moi. Je n'ai trouvé la réponse qu'en posant des questions au bureau, et j'ai découvert que le problème venait des sous-modules. Quand ils sont mis à jour, et que votre propre dépôt ne reflète pas ces changements, il apparaît comme ayant des différences, réinitialiser la tête n'aide pas. Si c'est le cas, exécutez :

git status update

Ce devrait aider à réparer les choses (dans ce cas particulier)

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