Différences entre git merge --squash et --no-commit

Comme le titre l'indique, Je ne suis pas vraiment clair sur les différences entre un git merge --squash et un git merge --no-commit.

Pour autant que je comprenne la page d'aide de git merge, les deux commandes me laisseraient dans un arbre de travail mis à jour, où il est toujours possible d'éditer puis de faire une validation finale (ou plusieurs validations).

Quelqu'un pourrait-il clarifier les différences entre ces 2 options? Quand devrais-je utiliser l'un au lieu de l'autre?

51
demandé sur quaylar 2012-03-07 14:08:07

1 réponses

git merge --no-commit

C'est comme une fusion normale mais ne crée pas de commit de fusion. Ce commit sera un commit de fusion: lorsque vous regardez l'Historique, votre commit apparaîtra comme une fusion normale.

git merge --squash

Cela fusionnera les modifications dans votre arborescence de travail sans créer de commit de fusion. Lorsque vous validez les modifications fusionnées, cela ressemblera à un nouveau commit "normal" sur votre branche: sans commit de fusion dans l'historique. C'est presque comme si vous aviez fait un choix sur tous les changements fusionnés.

69
répondu ralphtheninja 2014-06-25 16:30:03