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?
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
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 --
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
Un moyen non trivial consiste à exécuter ces deux commandes:
git stash
Ceci déplacera vos modifications dans la réserve, vous ramenant à l'état de HEADgit stash drop
Ceci supprimera le dernier stash créé dans la dernière commande.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).
Je pense que vous pouvez utiliser la commande suivante: git reset --hard
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.
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
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'
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