J'ai lu que GIT ajoute principalement des informations sur l'historique du référentiel, essayant de se souvenir de chaque changement effectué, mais qu'il existe également des commandes qui font des changements irréversibles. P>
Quelles sont les commandes que je devrais vraiment faire attention et éviter d'utiliser à tort parce qu'il n'y a pas de retournement? P>
4 Réponses :
Réinitialisation GIT --Hard ne peut pas être annulé p>
Selon http://blog.reverberate.org/2009/07/30/gits-needs-a-new-interface/
$ git checkout foo.c
Tout à fait vrai - il est encore plus destructeur que je pensais. Je viens de faire un Git Checkout 6BB33A8. Code> En espérant obtenir le fichier unique qui a changé dans ce commettre, mais elle a également essuyé mes modifications artégrées dans d'autres fichiers, les remplaçant avec le contenu de ce commettre. Je pensais que cela pourrait coller quelque chose dans le reflex pour me protéger, mais pas de bonne chance.
Vous pouvez perdre des modifications non engagées en utilisant la commande Par exemple, si vous git reset code>. Si vos modifications sont engagées, vous êtes protégé par le reflèvement depuis un certain nombre de jours avant qu'il ne soit nettoyé par gc code>. P>
Checkout code>, Rebase code>, réinitialiser code> ou fusion code> qui introduisent toutes les modifications, vous Peut revenir à une validation précédente en exécutant la commande reflog code> et en utilisant réinitialiser code> pour réinitialiser votre tête vers un ancien commit. P>
Il existe deux types de "destructrices" ici - des commandes destructives de votre historique GIT et de vos commandes qui jettent les changements de votre copie de travail. P>
commandes qui jettent l'arborescence change em>: p>
Comme d'autres personnes ont mentionné, la combinaison du reflèvement et le fait que les objets git ne sont pas immédiatement supprimés (sauf si vous activez le nettoyage automatique) signifie que vous pouvez généralement annuler des opérations telles que Ces commandes, cependant, effectivement rejeter les objets git em>, éliminant la capacité d'annuler: p>
Réinitialisation GIT CODE> LI>
caisse de git code> li>
ol>
Git Reset / Rebase / Fusionner code>. p>
git gc code> (par défaut, ces objets inaccessibles d'au moins 2 semaines) li>
ol>
À mon avis, le GIT le plus destructeur commande que ceux qui jettent les changements d'arbre de travail. Il devrait être toujours sûr de "faire une sauvegarde" avec 'git Stash; git cache pop '. Vous pouvez plus tard (jusqu'à votre limite de pruneau GC) Récupérer des versions "perdues" via une commande telle que: gitk --all -n -n 5000 --all $ (git fsck | awk '/ pendling commit / {impression 3}'; git bûche -g --Pretty = 'Format:% H') [Cela ouvrira Gitk Frontend avec jusqu'à 5000 engagements, y compris tous les engagements "perdus"].
Lorsque vous répondez à la question ci-dessous, n'oubliez pas d'expliquer ce que le commandement fait!