Question

Je suis en train d'apprendre comment restaurer ou les fichiers rollback et des projets à un état antérieur, et ne comprennent pas la différence entre git revert, checkout et reset. Pourquoi y at-il 3 commandes différentes pour en apparence le même but, et quand quelqu'un devrait choisir l'un sur l'autre?

Était-ce utile?

La solution

Ces trois commandes ont des finalités totalement différentes. Ils ne sont pas même à distance similaire.

git revert

Cette commande crée un nouveau commit que supprime les changements d'une précédente livraison. Cette commande ajoute une nouvelle histoire au projet (il ne modifie pas l'historique existant).

git checkout

Cette commande vérifie le contenu-du référentiel et le met dans votre arbre de travail. Il peut également avoir d'autres effets, selon la façon dont la commande a été invoquée. Par exemple, il peut aussi changer quelle branche vous travaillez actuellement. Cette commande ne fait pas de modifications à l'histoire.

git reset

Cette commande est un peu plus compliqué. Il ne fait deux choses différentes selon la façon dont elle est invoquée. Il modifie l'indice (le soi-disant « zone de mise en scène »). Ou il change qui engage une tête de branche pointe actuellement à. Cette commande peut modifier l'historique existant (en changeant la commettras qu'une des références de branche).

L'utilisation de ces commandes

Si une livraison a été faite quelque part dans l'histoire du projet, et vous décidez plus tard que la livraison est erroné et ne devrait pas avoir été fait, alors git revert est l'outil pour le travail. Il annulera les modifications introduites par la mauvaise validation, l'enregistrement de la dans l'histoire « undo ».

Si vous avez modifié un fichier dans votre arborescence de travail, mais n'ont pas commis le changement, vous pouvez utiliser git checkout à la caisse un nouveau-de-dépôt copie du fichier.

Si vous avez fait une livraison, mais n'ont pas partagé avec quelqu'un d'autre et que vous décidez que vous ne voulez pas, vous pouvez utiliser git reset de réécrire l'histoire afin qu'il semble que vous ne faites que commettre.

Ce ne sont que quelques-uns des scénarios d'utilisation possibles. Il existe d'autres commandes qui peuvent être utiles dans certaines situations, et les trois commandes ci-dessus ont d'autres utilisations aussi bien.

Autres conseils

  • git revert est utilisé pour annuler une précédente livraison. Dans git, vous ne pouvez pas modifier ou effacer un précédent engagement. (En fait, vous pouvez, mais il peut causer des problèmes.) Donc, au lieu de modifier le commit plus tôt, Revert introduit un commit qui renverse une précédente.
  • git reset est utilisé pour annuler les modifications dans votre répertoire de travail qui ne sont pas encore comitted.
  • git checkout est utilisé pour copier un fichier d'un autre arbre à votre commettras de travail actuel. Il ne commet pas automatiquement le fichier.

Le mot Let vous aviez commits:

C
B
A

git revert B, va créer un commettras que les changements de dénoue dans B.

git revert A, va créer un commettras que les changements de dénoue dans A, mais ne touche pas les changements dans B

Notez que si des changements dans B dépendent des changements dans A, le retour en arrière de A n'est pas possible.

git reset --soft A, va changer l'historique des commits et dépôt; mise en scène et répertoire de travail sera toujours à l'état de C.

git reset --mixed A, va changer l'historique des commits, dépôt et mise en scène; répertoire de travail sera toujours à l'état de C.

git reset --hard A, va changer l'historique des commits, dépôt, mise en scène et répertoire de travail; vous retournerez à l'état de A complètement.

  • git checkout modifie votre arbre de travail,
  • git reset modifie qui font référence à la branche que vous êtes sur les points à,
  • git revert ajoute livrez des changements perte.

Réinitialiser - Sur la validation de niveau, la réinitialisation est un moyen de déplacer la pointe d'une branche à une autre engagement. Cela peut être utilisé pour enlever commits de la branche actuelle.

Revert - Revenant Undoes en créant un commit un commit. Ceci est un moyen sûr d'annuler les modifications, car il n'a aucune chance de réécrire l'historique des commits. Cela contraste avec remise à zéro git, qui ne modifie pas l'historique de commits. Pour cette raison, Revert git devrait être utilisé pour annuler les changements sur une branche publique et remise à zéro git doit être réservé pour annuler des changements sur une branche privée.

Vous pouvez consulter sur ce lien- Reset, Commander et Revert

Si vous avez cassé l'arbre, mais n'a pas commis le code, vous pouvez utiliser git reset, et si vous voulez juste pour restaurer un fichier, vous pouvez utiliser git checkout.

Si vous avez cassé l'arbre et engagé le code, vous pouvez utiliser git revert HEAD.

http://book.git-scm.com/4_undoing_in_git_-_reset, _checkout_and_revert.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top