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.
Réponses
Trop de publicités?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
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!