Quelle est la meilleure façon d'annuler les modifications non validées avec Git.
J'ai lu ceci, mais je veux bien comprendre ce que fait chaque étape.
git annule toutes les modifications non validées ou non enregistrées
git clean -fdx
Cela signifie-t-il supprimer tous les fichiers ajoutés?
git checkout .
Qu'est-ce qui est considéré comme la racine? Si je suis sur la branche A et que je souhaite ignorer toutes les modifications non validées sur la branche A, la branche A est-elle considérée comme la racine?
git reset
Est-ce que cela supprime mes fichiers? y compris les fichiers ignorés? Et si les fichiers ignorés n'ont pas été modifiés?
3 Réponses :
Vous pouvez faire (à partir de la racine de votre dépôt)
git stash
ou alternativement (comme déjà suggéré par eftshift0 et Code-Apprentice dans leurs réponses)
git reset --hard HEAD
Les deux commandes restaureront vos fichiers dans l'état où ils étaient au dernier commit.
Attention cependant: cette opération ne peut pas être annulée . Si vous avez le moindre doute sur l'utilisation future de ces modifications qui ont échoué, il vaut mieux les cacher
:
git checkout HEAD -- .
(et avoir la possibilité de les inspecter ou les réutiliser ultérieurement)
Et à propos des autres commandes que vous avez envisagées, git reset
( HEAD
est implicite ici) "seulement" récupère tous les changements de l'index, pas de l'arborescence de travail. Ainsi, vos modifications indésirables seraient toujours là dans vos fichiers, juste sans étape pour le prochain commit.
Et méfiez-vous de git clean -fdx
, c'est une commande dangereuse si elle est mal utilisée, car il supprimera tous les fichiers non suivis. Il a son utilité, mais dans le cas que vous décrivez (obtenir votre projet dans l'état où il était au dernier commit), ce n'est pas ce dont vous avez besoin.
@rkta C'est vrai. Mais je faisais référence aux modifications non validées, et bien que vous puissiez effectivement revenir à l'état précédent dans le reflog, vous ne récupérerez pas vos modifications non validées.
Ce que les gens font habituellement quand ils pensent f% ck it, je ne veux pas voir ce que j'ai devant moi, je veux tout prendre dans mon arbre de travail tel qu'il était lors de la dernière révision et oubliez tout le reste est:
git reset --hard
À utiliser avec prudence: il faudra que votre arbre de travail soit tel qu'il est sur la révision sur laquelle vous êtes, tous les changements dans l'arbre de travail et dans l'index sont supprimés, vous ne les reverrez donc plus.
Que signifie unstage?
"unstage" signifie que les modifications sont supprimées de l'index. L'index est l'endroit où vous organisez les modifications avant de les valider. La désinstallation ne supprime aucun fichier ni n'annule les modifications de votre répertoire de travail.
Qu'est-ce qui est considéré comme la racine?
Ici, "root" fait référence au répertoire de base de votre projet. Cela n'a rien à voir avec les branches ou les commits.
Je veux simplement revenir à mon dernier commit et ne pas m'inquiéter des changements après. Quelle est la manière la plus simple et la plus sûre de faire cela?
Le moyen le plus simple de supprimer toutes vos modifications locales est d'utiliser
git reset --hard HEAD
quelle est la différence entre git reset --hard HEAD
et git reset --hard
Aucun. HEAD
est implicite lorsque vous ne passez aucune référence explicitement.
Copie possible de git: annuler toutes les modifications du répertoire de travail, y compris les nouveaux fichiers < / a>
stackoverflow.com/search?q=%5Bgit%5D+undo+all+changes