web-dev-qa-db-fra.com

Comment annuler les modifications non validées, y compris les fichiers et les dossiers?

Existe-t-il une commande git permettant d'inverser toutes les modifications non validées dans une arborescence et un index de travail et de supprimer également les fichiers et les dossiers nouvellement créés?

985
MEM

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
1666
htanata

Si vous souhaitez annuler les modifications uniquement dans le répertoire de travail en cours, utilisez

git checkout -- .

Et avant cela, vous pouvez lister les fichiers qui seront restitués sans effectuer aucune action, juste pour vérifier ce qui va se passer, avec:

git checkout --
530
Ramashish Baranwal

Utilisez "git checkout - ..." pour ignorer les modifications dans le répertoire de travail

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

ou

git checkout -- *

supprime toutes les modifications apportées aux fichiers non mis en état dans le statut git, par exemple

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb
103
Zarne Dravitzki

Un moyen non trivial consiste à exécuter ces deux commandes:

  1. git stash Ceci déplacera vos modifications dans la réserve, vous ramenant à l'état de HEAD
  2. git stash drop Ceci supprimera le dernier stash créé dans la dernière commande.
50
glumgold
git clean -fd

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

git reset --hard

Voir " Comment effacer mon répertoire de travail local dans git? " pour obtenir des conseils sur l'ajout de l'option -x à nettoyer:

git clean -fdx

Remarque -x flag supprimera tous les fichiers ignorés par Git, soyez donc prudent (voir la discussion dans la réponse à laquelle je me réfère).

19
Fr0sT

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

13
Josnidhin

S'il vous plaît noter qu'il peut encore y avoir des fichiers qui ne semblent pas disparaître - ils ne sont peut-être pas édités, mais git les a peut-être marqués comme étant édités à cause des modifications apportées à CRLF/LF. Vérifiez si vous avez récemment apporté des modifications à .gitattributes.

Dans mon cas, j'ai ajouté les paramètres CRLF dans le fichier .gitattributes et tous les fichiers sont restés dans la liste "fichiers modifiés" à cause de cela. Changer les paramètres .gitattributes les a fait disparaître.

5
Rob Quist

Si vous avez une modification non validée (sa seule dans votre copie de travail) que vous souhaitez rétablir dans la copie de votre dernier commit, procédez comme suit:

git checkout filename
4
kgandroid

Git 2.13 a introduit la commande git restore pour restaurer les fichiers de l’arbre de travail.

https://git-scm.com/docs/git-restore

Pour restaurer tous les fichiers du répertoire actuel

git restaurer.

Si vous souhaitez restaurer tous les fichiers source C pour qu'ils correspondent à la version de l'index, vous pouvez le faire.

restauration git '* .c'

0
TheKojuEffect

Vous pouvez simplement utiliser la commande suivante git qui peut rétablir toutes les modifications non validées apportées dans votre référentiel:

git checkout .

Exemple:

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   application/controllers/Drivers.php
        modified:   application/views/drivers/add.php
        modified:   application/views/drivers/load_driver_info.php
        modified:   uploads/drivers/drivers.xlsx

no changes added to commit (use "git add" and/or "git commit -a")

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.

nothing to commit, working tree clean
0
Haritsinh Gohil