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?
1072
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:
la source
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
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:
la source
git reset --hard
?Utilisez "git checkout - ..." pour annuler les modifications dans le répertoire de travail
ou
supprime toutes les modifications apportées aux fichiers non mis en scène dans l'état git, par exemple
la source
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.la source
fatal: git-write-tree: error building trees Cannot save the current index state
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
Voir " Comment effacer mon répertoire de travail local dans git? " Pour obtenir des conseils sur l'ajout de l'
-x
option de nettoyage: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).la source
Je pense que vous pouvez utiliser la commande suivante:
git reset --hard
la source
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.la source
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:
la source
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
Si vous souhaitez restaurer tous les fichiers source C pour correspondre à la version de l'index, vous pouvez le faire
la source
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:
Exemple:
la source
J'utilise généralement cette méthode qui fonctionne bien:
la source
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
la source
Utilisation:
Par exemple:
la source