599 votes

Git, quelle est la différence entre fusion--courge et rebase ?

Je suis nouveau sur git et j’essaie de comprendre la différence entre une courge et un rebasage. Si je comprends bien vous effectuez une courge lors de faire un rebasage.

462voto

VonC Points 414372

Les deux git merge --squash et git rebase --interactive peut produire un "écrasé" s'engager.
Mais ils servent à des fins différentes.

va produire un écrasé de validation sur l'agence de destination, sans marquer de fusion de la relation.
Ceci est utile si vous voulez jeter de la branche source complètement, passant de (schéma de prises de DONC, la question):

      X                   stable
     /                   
a---b---c---d---e---f---g tmp

pour:

      X-------------------G stable
     /                   
a---b---c---d---e---f---g tmp

et puis en supprimant tmp branche.

les replays certains ou la totalité de votre s'engage sur une nouvelle base, vous permettant de courge (ou, plus récemment, "corriger", voir ce DONC, la question), allez directement à:

      stable
      X-------------------G tmp
     /                     
a---b

Si vous choisissez de fusionner tous les commits de la tmp (mais, contrairement à l' merge --squash, vous pouvez choisir de rejouer certaines, et en écrasant les autres).

Ainsi, les différences sont:

  • on ne touche pas votre source de branche (tmp ici) et crée un commit unique où vous voulez.
  • l'autre vous permet de monter sur la même branche source:
    • une nouvelle base
    • un nettoyeur de l'histoire

107voto

Mauricio Scheffer Points 70470

Fusion de squash fusionne un arbre (une séquence de commits) en un seul commit. C'est, il écrase tous les changements faits dans n engage dans un seul commit.

La relocalisation est re-fonder, c'est le choix d'une nouvelle base (parent commettre) pour un arbre. Peut-être l'mercurial terme pour ce qui est de plus en plus clair: ils appellent ça de la transplantation, car il est juste que: choisir un nouveau sol (parent s'engager, racine) pour un arbre.

Quand faire un rebase interactif, vous avez la possibilité soit de squash, prendre, modifier ou ignorer les commits que vous allez rebase.

Espère que c'était clair!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X