Comment supprimer toutes les modifications du répertoire de travail, y compris les nouveaux fichiers non suivis. Je sais que cela git checkout -f
fait cela, mais il ne supprime pas les nouveaux fichiers non suivis créés depuis le dernier commit.
Quelqu'un a-t-il une idée de comment faire cela?
git help reset
etgit help clean
Réponses:
Pour voir ce qui sera supprimé à l'avance, sans le supprimer, utilisez l'
-n
indicateur (il s'agit essentiellement d'un test). Lorsque vous êtes prêt à supprimer, supprimez le-n
drapeau:git clean -nfd
la source
git clean -fxd
peut en fait être VRAIMENT dangereux si vous ne savez pas ce que vous faites. Vous pouvez finir par supprimer définitivement certains fichiers très importants non suivis, tels que votre base de données, etc. Soyez prudent.git clean -f -d
cela supprimera également les fichiers des dossiers ignorés. Ainsi, tous vos journaux locaux et autres choses de ce genre auront disparu. Ce n'est généralement pas un gros problème, mais il vaut mieux le savoir.Méthode la plus sûre, que j'utilise fréquemment:
Explication de la syntaxe selon la
/docs/git-clean
page:-f
(alias:)--force
. Si la variable de configuration Git clean.requireForce n'est pas définie sur false, git clean refusera de supprimer des fichiers ou des répertoires à moins d'indiquer -f, -n ou -i. Git refusera de supprimer les répertoires avec le sous-répertoire ou fichier .git à moins qu'un second -f ne soit donné.-d
. Supprimez les répertoires non suivis en plus des fichiers non suivis. Si un répertoire non suivi est géré par un autre référentiel Git, il n'est pas supprimé par défaut. Utilisez l'option -f deux fois si vous voulez vraiment supprimer un tel répertoire.Comme mentionné dans les commentaires, il pourrait être préférable de faire un
git clean -nd
qui fait un essai à sec et vous indique ce qui serait supprimé avant de le supprimer.Lien vers la
git clean
page du document: https://git-scm.com/docs/git-cleanla source
git clean -nd .
avant de supprimer des fichiers en utilisantgit clean -fd .
add -A
+commit -a
+ viergerevert head
avantgit clean
. L'examen de chaque suppression ne prend tout simplement pas en compte les scénarios principaux. De plus, le fonctionnement à sec n'est pas une solution miracle: que faire si vous avez raté quelque chose ou fait une erreur lors de l'examen?Pour tous les fichiers non organisés , utilisez:
La
.
fin est importante.Vous pouvez remplacer
.
par un nom de sous-répertoire pour effacer uniquement un sous-répertoire spécifique de votre projet. Le problème est traité spécifiquement ici .la source
src/app/work/filename.js
et../app/working/test/filename.js
. Le simple fait d'utilisergit checkout -- .
sur la branche n'a supprimé que le premier fichier ( sans le début ../ ). J'ai donc dûcd ../
monter dans le deuxième répertoire d'emplacement pour supprimer le deuxième fichier à l'aide de cette commande.Jetez un oeil à la
git clean
commande.la source
git clean -i
et choisi "nettoyer" dans le menu - cela a finalement supprimé de nouveaux fichiers.Les oeuvres suivantes:
Veuillez noter que cela supprimera à la fois vos modifications locales non mises en scène et mises en scène. Vous devez donc valider tout ce que vous souhaitez conserver avant d'exécuter ces commandes.
Un cas d'utilisation typique: vous avez déplacé un grand nombre de fichiers ou de répertoires, puis souhaitez revenir à l'état d'origine.
Crédits: https://stackoverflow.com/a/52719/246724
la source
git stash drop
?git add -A .
). J'ai perdu 30m car il n'y avait pas de correspondance de fichier. Merci!Vous pouvez le faire en deux étapes:
git checkout -f
git clean -fd
la source
Je pensais qu'il était ( avertissement: suivant va effacer tout )
L'
reset
annulation des modifications. Leclean
pour éliminer tout untracked f iles et d irectories.la source
git pull
après:CONFLICT (content): Merge conflict in...
je n'ai résolu cela que pargit pull --strategy=ours
Il supprimera tous les fichiers non suivis.
la source
git clean -i
vous montrera d'abord les éléments à supprimer et procédera après votre confirmation. Je trouve cela utile lorsque vous traitez des fichiers importants qui ne devraient pas être supprimés accidentellement.Voir
git help clean
pour plus d'informations, y compris d'autres options utiles.la source
Si vous souhaitez annuler toutes les modifications, vous pouvez utiliser l'une des options valides d'un alias dans
.gitconfig
. Par exemple:Usage:
git discard
la source
Une autre solution consiste à valider les modifications, puis à supprimer ces validations. Cela n'a pas un avantage immédiat au début, mais cela ouvre la possibilité de valider en morceaux et de créer une balise git pour la sauvegarde.
Vous pouvez le faire sur la branche actuelle, comme ceci:
Ou vous pouvez le faire sur la tête détachée. (en supposant que vous commenciez sur la branche BRANCHNAME):
Cependant, ce que je fais habituellement, c'est de commettre par morceaux, puis de nommer certains ou tous les commits comme "DISCARD: ...". Utilisez ensuite un rebase interactif pour supprimer les mauvais commits et conserver les bons.
C'est plus détaillé, mais cela permet de revoir exactement les changements que vous souhaitez supprimer.
Les raccourcis
git lol
etgit lola
ont été très utiles avec ce flux de travail.la source
Pour un dossier spécifique que j'ai utilisé:
la source
C'est probablement une réponse noob, mais: j'utilise TortoiseGit pour Windows et il a une belle fonctionnalité appelée REVERT. Donc, ce que vous faites pour annuler vos modifications locales non mises en scène non poussées est:
la source