Comment rétablir les changements non engagés, y compris les fichiers et les dossiers?

y a-t-il une commande git pour revenir sur tous les changements non engagés dans un arbre de travail et un index et pour supprimer aussi les fichiers et dossiers nouvellement créés?

901
demandé sur the Tin Man 2011-04-27 20:06:09
la source

10 ответов

vous pouvez exécuter ces deux commandes:

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`)
git clean -fd
1510
répondu htanata 2015-12-27 19:18:28
la source

si vous voulez revenir en arrière uniquement dans le répertoire courant, utilisez

git checkout -- .

et avant cela, vous pouvez lister les fichiers qui seront inversés sans réellement faire aucune action, juste pour vérifier ce qui va se passer, avec:

git checkout --
487
répondu Ramashish Baranwal 2018-04-05 11:34:31
la source

Utilisez "git checkout -- ..."pour rejeter les changements dans le répertoire de travail

git checkout -- app/views/posts/index.html.erb

ou

git checkout -- *

supprime tous les changements apportés aux fichiers non marqués en statut git eg

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb
94
répondu Zarne Dravitzki 2013-03-13 05:16:12
la source

une façon non triviale est d'exécuter ces deux commandes:

  1. git stash ceci déplacera vos changements dans la cachette, vous ramenant à L'état de tête
  2. git stash drop ceci supprimera la dernière réserve créée dans la dernière commande.
44
répondu glumgold 2015-05-20 16:20:36
la source
git clean -fd

n'a pas aidé, de nouveaux fichiers sont restés. Ce que j'ai fait c'est supprimer totalement tout l'arbre de travail et puis

git reset --hard

Voir " Comment puis-je effacer mon répertoire local de travail dans git? " pour avoir des conseils pour ajouter le -x option pour nettoyer:

git clean -fdx

Note -x le drapeau supprimera tous les fichiers ignorés par Git alors soyez prudent (Voir la discussion dans la réponse à laquelle je me réfère).

15
répondu Fr0sT 2017-05-23 15:26:36
la source

je pense que vous pouvez utiliser la commande suivante: git reset --hard

11
répondu Josnidhin 2013-04-24 17:54:02
la source

veuillez noter qu'il se peut qu'il y ait encore des fichiers qui ne semblent pas disparaître - ils peuvent ne pas avoir été modifiés, mais git peut les avoir marqués comme étant en cours d'édition à cause des changements CRLF / LF. Voyez si vous avez fait des changements dans .gitattributes récemment.

dans mon cas, j'ai ajouté les paramètres CRLF dans le fichier .gitattributes et tous les fichiers sont restés dans la liste des" fichiers modifiés " pour cette raison. Modification de l' .gitattributes réglages effectués disparaître.

5
répondu Rob Quist 2017-11-03 14:45:40
la source

d'Un coffre-fort et long termes:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. git branch -D todelete
-2
répondu Jason Lemay 2016-03-22 21:36:09
la source

j'utilise habituellement cette façon qui fonctionne bien:

mv fold/file /tmp
git checkout fold/file
-2
répondu thinkhy 2016-04-08 10:17:05
la source

utiliser:

git reset HEAD filepath

par exemple:

git reset HEAD om211/src/META-INF/persistence.xml
-3
répondu Aniket 2016-03-22 21:36:35
la source

Autres questions sur git git-reset git-revert git-clean