11
votes

Quelles sont les commandes destructrices dans Git?

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.

Quelles sont les commandes que je devrais vraiment faire attention et éviter d'utiliser à tort parce qu'il n'y a pas de retournement?

git

1 commentaires

Lorsque vous répondez à la question ci-dessous, n'oubliez pas d'expliquer ce que le commandement fait!


4 Réponses :


2
votes

Réinitialisation GIT --Hard ne peut pas être annulé


0 commentaires

7
votes

1 commentaires

Tout à fait vrai - il est encore plus destructeur que je pensais. Je viens de faire un Git Checkout 6BB33A8. 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.



3
votes

Vous pouvez perdre des modifications non engagées en utilisant la commande git reset . 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 .

Par exemple, si vous Checkout , Rebase , réinitialiser ou fusion qui introduisent toutes les modifications, vous Peut revenir à une validation précédente en exécutant la commande reflog et en utilisant réinitialiser pour réinitialiser votre tête vers un ancien commit.


0 commentaires

11
votes

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.

commandes qui jettent l'arborescence change :

  1. Réinitialisation GIT
  2. caisse de git

    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 Git Reset / Rebase / Fusionner .

    Ces commandes, cependant, effectivement rejeter les objets git , éliminant la capacité d'annuler:

    1. git gc (par défaut, ces objets inaccessibles d'au moins 2 semaines)

1 commentaires

À 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"].