Comment puis-je éliminer de ma copie de travail les modifications qui ne figurent pas dans l'index ?
Cela semble être la méthode canonique de git, c'est-à-dire exactement ce que git vous dit de faire si vous tapez git status
Comment puis-je éliminer de ma copie de travail les modifications qui ne figurent pas dans l'index ?
Pour tous les fichiers non gérés dans le répertoire de travail actuel, utilisez :
git checkout -- .
Pour un fichier spécifique, utilisez :
git checkout -- path/to/file/to/revert
--
ici pour lever toute ambiguïté (ceci est connu sous le nom de désambiguïsation des arguments ).
À partir de la version 2.23 de Git, il est préférable d'utiliser l'option plus spécifique suivante
git restore .
resp.
git restore path/to/file/to/revert
qu'avec git switch
remplace la surcharge git checkout
( voir ici ), et supprime ainsi la désambiguïsation de l'argument.
Cela semble être la méthode canonique de git, c'est-à-dire exactement ce que git vous dit de faire si vous tapez git status
Ne fonctionne pas s'il y a des fichiers non suivis. Git dit error: The following untracked working tree files would be overwritten by checkout: ...
.
Je pense qu'il est préférable d'utiliser git reset --hard si vous ne voulez pas garder la trace des changements.
@KarimSamir : La question porte spécifiquement sur les changements qui sont pas dans l'index . Le site git reset
éliminera également les changements dans l'index.
Il semble que la solution complète soit :
git clean -df
git checkout -- .
git clean
supprime tous les fichiers non suivis ( avertissement : mais il ne supprimera pas les fichiers ignorés mentionnés directement dans .gitignore, il peut supprimer des fichiers ignorés résidant dans des dossiers ) et git checkout
efface toutes les modifications non organisées.
@dval c'est parce que la première commande a supprimé les fichiers non indexés et la seconde a supprimé les changements non indexés (des fichiers indexés). Donc, si vous n'aviez pas de modifications indexées, cela revient à revenir au dernier commit avec la commande git reset --hard
+1 C'est la BONNE RÉPONSE, car elle gère correctement le cas où certains fichiers ont été mis à jour à la fois par des étapes et des étapes. y changements non échelonnés. Notez que cette solution REPARTITIONNE les modifications non indexées ; si vous souhaitez les conserver, vous devez utiliser la réponse de @greg-hewgill qui consiste à git stash save --keep-index
.
git checkout --
ne fonctionne pas si vous n'avez qu'une seule branche. git checkout .
fonctionne toujours.
Merci beaucoup ! Enfin une réponse qui fonctionne TOUJOURS ! Ceci peut être combiné avec git clean
pour supprimer également les fichiers non suivis.
git clean -df
Nettoie l'arbre de travail en supprimant récursivement les fichiers qui ne sont pas sous contrôle de version, en commençant par le répertoire courant.
-d
: Suppression des répertoires non tracés en plus des fichiers non tracés
-f
: Force (peut ne pas être nécessaire en fonction de clean.requireForce
réglage)
Exécuter git help clean
pour voir le manuel
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Voir aussi stackoverflow.com/questions/22620393/
14 votes
git-clean
supprime uniquement les fichiers non suivis de l'arbre de travail git-scm.com/docs/git-clean28 votes
Pour clarifier le commentaire d'Asenar ci-dessus,
git-clean -df
peut être dangereux. Il supprimera les fichiers locaux non suivis (par exemple, ceux qui sont couverts par un .gitignore). Lisez attentivement tout ce qui suit et envisagez plutôt le git checkout .19 votes
'git clean -df ' Attention ! J'ai essayé cela et j'ai perdu des dossiers clés qui ne peuvent pas être restaurés... Aïe !
60 votes
En frappant
git status
donne une suggestion sur la façon de le faire !git checkout -- .
0 votes
Le gui git possède une fonctionnalité qui permet de revenir en arrière de manière sûre. .gitignore est honoré par ce programme alors que git-clean ne l'utilise pas du tout.
0 votes
@Readonly Je pense que la question devrait être "Comment puis-je supprimer les modifications non organisées dans l'arborescence de travail ?" Parce que vous pouvez supprimer les modifications dans la zone de transit en
git reset HEAD file1
qui écrasefile1
à partir du commit le plus récent dans l'historique de commit. vers la zone de transit.18 votes
@Paulo : à partir de juillet 2019,
git status
donne la suggestion :git restore
.git restore
est une nouvelle commande exactement destinée à cet effet. Voir ma mise à jour de 2019 .1 votes
Je pense que la question ou le titre devrait être modifié. Le titre n'est pas le même que la question posée, il n'est pas clair si les réponses couvrent les deux.