Existe-t-il une commande git pour annuler toutes les modifications non validées dans une arborescence et un index de travail et pour supprimer également les fichiers et dossiers nouvellement créés?
Existe-t-il une commande git pour annuler toutes les modifications non validées dans une arborescence et un index de travail et pour supprimer également les fichiers et dossiers nouvellement créés?
Réponses:
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
git clean -i
pour un mode interactif.
git merge --abort
.
Si vous souhaitez annuler les modifications uniquement dans le répertoire de travail actuel, utilisez
git checkout -- .
Et avant cela, vous pouvez lister les fichiers qui seront rétablis sans faire aucune action, juste pour vérifier ce qui va se passer, avec:
git checkout --
git reset --hard
?
Utilisez "git checkout - ..." pour annuler 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 scène dans l'état git, par exemple
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
ne fonctionne pour moi que si je suis dans le répertoire où se trouvent les fichiers modifiés. Pour extraire tous les fichiers de l'ensemble du référentiel, vous devez le fairegit checkout -- :/
git checkout -- *
, l'étoile est remplacée par Shell, avec tous les fichiers et répertoires dans le répertoire courant. Il devrait donc aller dans les sous-répertoires. Ça marche pour moi. Mais merci de mettre en évidence la syntaxe ": /" qui me semble plus propre.
Une façon non triviale consiste à exécuter ces deux commandes:
git stash
Cela mettra vos modifications dans la cachette, vous ramenant à l'état de HEADgit stash drop
Cela supprimera la dernière cachette créée dans la dernière commande.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
n'a pas aidé, de nouveaux fichiers sont restés. Ce que j'ai fait, c'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' -x
option de nettoyage:
git clean -fdx
L' -x
indicateur de note supprimera tous les fichiers ignorés par Git, alors soyez prudent (voir la discussion dans la réponse à laquelle je fais référence).
Je pense que vous pouvez utiliser la commande suivante: git reset --hard
Veuillez noter qu'il peut toujours y avoir des fichiers qui ne semblent pas disparaître - ils peuvent ne pas être édités, mais git peut les avoir marqués comme étant modifiés en raison de modifications CRLF / LF. Vérifiez si vous avez apporté des modifications .gitattributes
récemment.
Dans mon cas, j'ai ajouté des paramètres CRLF dans le .gitattributes
fichier et tous les fichiers sont restés dans la liste des "fichiers modifiés" à cause de cela. La modification des paramètres .gitattributes les a fait disparaître.
Si vous souhaitez apporter une modification non validée (uniquement dans votre copie de travail) à la copie dans votre dernier commit, procédez comme suit:
git checkout filename
git rm filename
, et cela ne fonctionne pas. error: pathspec 'filename' did not match any file(s) known to git.
git rm
estgit checkout master -- filename
Git 2.23 a introduit la git restore
commande pour restaurer les fichiers d'arborescence de travail.
https://git-scm.com/docs/git-restore
Pour restaurer tous les fichiers du répertoire actuel
git restore.
Si vous souhaitez restaurer tous les fichiers source C pour correspondre à la version de l'index, vous pouvez le faire
git restaurer '* .c'
Vous pouvez simplement utiliser la commande git suivante qui peut revenir en arrière 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
Un chemin sûr et long:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete