Comment puis-je effectuer l'équivalent de «Annuler les modifications en attente» de TFS dans Git, sur un ou plusieurs fichiers?
Cela signifie essentiellement faire ces étapes:
Il serait bon de connaître les différences (s’il en existe) dans les commandes permettant de faire cela si (1) vient de le changer sur le disque, sans l’ajouter , mais aussi lorsque vous avez (2) fait l'ajout-commande et pour un bonus, (3) même lorsque vous avez validé la modification .
Pour 1 et 2, tout ce que vous avez à faire est de:
git stash -u #same effect as git reset --hard, but can be undone
cela jettera tous les changements. Faites attention si vous utilisez reset
. Découvrez comment manipuler l'index et les permutations des options hard, soft et mixtes avec reset et checkout. Le livre progit explique cela en détail: http://progit.org/2011/07/11/reset.html
Pour 3,
git reset --hard HEAD^
mais il serait préférable d’émettre un git stash -u
avant cela - juste au cas où vous auriez des modifications en attente.
Cela réinitialisera la branche actuelle sur le parent de la validation actuelle. Recherchez "tree-ish" en ligne. ^ et ~ N après une référence vous permettront de pointer vers n'importe quel point accessible de l'historique de cette référence. Pour comprendre comment l’histoire est suivie dans git, "Git pour les scientifiques" explique bien le graphe acyclique dirigé: http://eagain.net/articles/git-for-computer-scientists/
Pour obtenir des fichiers individuels à partir de l'état du commit en cours (c'est-à-dire, jeter les modifications), vous pouvez utiliser checkout
git checkout HEAD -- <a list of files>
Si vous avez émis la dernière commande de réinitialisation ci-dessus par erreur, vous ne rencontrez aucun problème. Git garde la trace des branches utilisées pour pointer dans le reflog.
git reflog
vous listera l'histoire. Vous pouvez voir dans cette sortie comment référencer chacune d'elles, donc:
git reset --hard HEAD@{1}
réinitialisera la branche à l'endroit où il y avait 1 changement auparavant.
Pour ajouter, si vous voulez effacer les fichiers ignorés et les fichiers non suivis, vous pouvez effacer avec ceci:
git clean -xdf
Cette commande annulera les modifications locales et les restaurera dans les versions actuelles du référentiel:
git reset --hard
Vous pouvez revenir à votre dernier commit valide en émettant:
git reset --hard HEAD
Si vous voulez juste restaurer un seul fichier, utilisez plutôt git checkout:
git checkout -- file_name.extension
git checkout HEAD file_name.extension
git checkout [path]
ou (rapport complet) git reset --hard HEAD
git reset [path]
suivi de git checkout [path]
git reset --hard [commit]
pour restaurer l’état du référentiel à [commit]
, qui doit être un tree-ishMon équivalent à TFS undo
dans Git avec Eclipse est simplement de cliquer avec le bouton droit de la souris sur le fichier et de sélectionner Replace with
-> HEAD Revision
(ou la version de votre choix).