7
votes

Quelles sont certaines actions en git qui sont difficiles / impossibles à annuler?

L'un des atouts de Git est que, car il fonctionne avec des pointeurs, il est relativement facile d'annuler un large éventail de tâches, notamment Supprimer un commit ou commettre ou Création et suppression de branches distantes . Dans de nombreux cas, tout ce que vous avez à faire est de réinitialiser correctement le pointeur de tête de la branche actuelle à l'emplacement souhaité et à la voile, étape non annulée. Cela englobe un très large éventail de cas.

Autre que la suppression d'un référentiel entier ou une mauvaise pression, quelle est l'action la plus non triviale qui ne peut pas être annulée ni extrêmement difficile à annuler dans un référentiel git standard?

git

2 commentaires

Je ne comprends pas le point de cette question.


Je faire comprend le point de cette question et des analyses similaires. Essentiellement, il demande: "Où être dragons?" Cette question est loin d'être "non constructive", mais c'est un meilleur ajustement pour les échanges de pile de programmeurs. Lorsque vous commencez avec une nouvelle technologie, les développeurs veulent souvent savoir où sont les dragons, les pièges et les pièges de la charge.


4 Réponses :


3
votes
  • git propre supprime les fichiers non traqués. Ils ne peuvent pas être restaurés avec git.

  • La fusion avec un arbre de travail sale peut entraîner quelque chose qui est difficile à restaurer.

    Donc, en bref, des choses qui ne sont pas suivies par Git ne peuvent pas être restaurées par Git. Tout le reste est réparable.


1 commentaires

En fait, tout ce qui est suivi par Git peut être restauré. La suppression d'une branche semble être permanente. Il existe même des manières non évidentes pour que la suppression de la branche se produise, par ex. GIT PUSH -MIRROR REMOTE ; Lorsque votre local n'a pas de branches qui figurent sur la télécommande, la branche distante est supprimée de manière non interactive. ( cf. L'extrait des pages d'aide git : "-mirror [. ..



3
votes

Un exemple d'action difficile à annuler serait: XXX

Le premier supprime la référence à certains engagements. La seconde supprime tous les engagements sans références.

J'espère que cette question est juste une question de curiosité inactive, plutôt que de vouloir détruire quelqu'un de quelqu'un, mais en raison de la redondance inhérente au contrôle de la version distribuée, je suis pas trop inquiet.


2 commentaires

Cette combinaison d'options Nuke Nuke les objets référencés par reflog ?


Ceci est définitivement plus proche de la curiosité inactive que la malice. Je suis plus intéressé par les éventuelles limitations des capacités de contrôle des sources de GIT.



4
votes

De loin le plus courant "difficile à annuler" que je rencontre parmi les nouveaux to git sont des abus de git cache , car git starh pop n'est pas toujours réversible avec git cachette . Envisagez: xxx

le pop tentera de rétablir a et lancera un conflit, mais vous ne pouvez pas revenir à la sortie de la Pop en frappant git cachette à nouveau. C'est un exemple assez trivial, mais il est facile d'entrer dans un endroit méchant si vous blanchissez souvent de grands ensembles de changements et vous changez fréquemment des branches divergentes, sur le chemin. Je crois que git cache goutte est également permanent, c'est-à-dire qu'il n'y a pas de filet de sécurité si vous déposez la mauvaise cachette.

en général, utilisez STASH pour ce qu'il a été conçu pour faire: Caster une sale indice de travail pour accéder à une autre succursale, réparer un bogue, commettre, pousser et accumuler à votre état d'origine. Si vous essayez de l'utiliser pour gérer beaucoup de changements dans de nombreuses branches, cela vous mordra inévitablement sans beaucoup de soins.


1 commentaires

C'est une ancienne entrée, mais dans ce cas, vous pouvez simplement réinitialiser --hard . STHSH POP Ne dépose pas automatiquement l'entrée de la cachette au cas où.



0
votes

Dans mon expérience, l'action irréversible la plus courante que les gens effectuent est git reset --hard . Quand beaucoup de gens écrivent git reset , - dur semble venir trop naturellement quand ils n'avaient vraiment besoin que d'un réinitialiser , peut-être avec - -Marge .


0 commentaires