Question

Y at-il une commande git pour annuler tous les changements non engagés dans un arbre de travail et de l'index et de supprimer également les fichiers nouvellement créés et les dossiers?

Était-ce utile?

La solution

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

Autres conseils

Si vous souhaitez annuler les modifications que dans le répertoire de travail courant, utilisez

git checkout -- .

Et avant cela, vous pouvez lister les fichiers qui seront corrigées sans faire réellement une action, juste pour vérifier ce qui se passera, avec:

git checkout --

Utilisez "git checkout - ..." à des changements dans le répertoire de travail défausse

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

ou

git checkout -- *

supprime toutes les modifications apportées aux fichiers Unstaged statut git par exemple

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

Une façon non triviale consiste à exécuter ces deux commandes:

  1. git stash Cela déplacera vos modifications à la planque, vous ramener à l'état de HEAD
  2. git stash drop Cela supprimera la dernière planque créé dans la dernière commande.
git clean -fd

n'a pas aidé, de nouveaux dossiers sont restés. Ce que je l'ai fait est totalement effacé tous les arbres de travail puis

git reset --hard

Voir « Comment puis-je effacer mon répertoire de travail local git » pour obtenir des conseils pour ajouter l'option -x à nettoyer:?

git clean -fdx

Remarque drapeau -x supprimera tous les fichiers ignorés par Git alors faites attention (voir la discussion dans la réponse que je réfère à).

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

S'il vous plaît noter qu'il pourrait y avoir encore des fichiers qui ne semblent disparaître - ils pourraient être non édité, mais git aurait pu les marqué comme en cours d'édition en raison des changements CRLF / LF. Voyez si vous avez fait quelques changements dans .gitattributes récemment.

Dans mon cas, je l'ai ajouté les paramètres de CRLF dans le fichier .gitattributes et tous les fichiers est resté dans la liste des « fichiers modifiés » à cause de cela. Modification des paramètres .gitattributes fait disparaître.

Si vous avez un changement non engagé (son seul dans votre copie de travail) que vous souhaitez revenir à la copie dans votre dernière commettez, procédez comme suit:

git checkout filename

Vous pouvez simplement utiliser la commande git suivante qui peut revenir toutes les modifications non validées effectué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

Git 2.23 introduit commande git restore pour restaurer les fichiers de travail d'arbres.

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

Pour restaurer tous les fichiers dans le répertoire courant

git la restauration.

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

git restaurer '* .c'

Une façon sûre et à long:

  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

J'utilise habituellement de cette façon qui fonctionne bien:

mv fold/file /tmp
git checkout fold/file

Utilisation:

git reset HEAD filepath

Par exemple:

git reset HEAD om211/src/META-INF/persistence.xml
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top