Quelles sont les différences entre `–squash` et` –no-ff –no-commit`?

Lequel faut-il utiliser pour cacher les microcommits?

La seule différence entre git merge --squash et git merge --no-ff --no-commit le déni des autres parents?

Les différences

Ces options existent à des fins distinctes. Votre repository se termine différemment.

Supposons que votre référentiel se présente comme ceci après que vous ayez fini de développer la twig:

entrer la description de l'image ici

--squash

Si vous git merge --squash topic; git commit -m topic maître et que vous voulez git merge --squash topic; git commit -m topic git merge --squash topic; git commit -m topic , vous obtenez ceci:

entrer la description de l'image ici

--no-ff --no-commit

Au lieu de cela, si vous faites git merge --no-ff --no-commit; git commit -m topic git merge --no-ff --no-commit; git commit -m topic , vous obtenez ceci:

entrer la description de l'image ici

Cacher les micro-commits

Si vous voulez vraiment cacher (je veux dire supprimer de votre référentiel) vos micro-commits, utilisez --squash . Parce que, comme vous pouvez le voir dans les images ci-dessus, vous ne cachez pas vraiment vos micro-commits si vous ne les écrasez pas. De plus, vous ne poussez généralement pas vos twigs thématiques dans le monde. Les twigs thématiques doivent être matures.

Si vous voulez que votre historique ait tous vos micro-commits, mais que vous les laissiez dans une autre ligne de développement (la ligne verte dans les images ci-dessus), utilisez --no-ff --no-commit . Mais rappelez-vous s’il vous plaît que a) ceci n’est pas une twig, et b) ne signifie pas vraiment quelque chose dans Git parce que c’est juste un autre parent de votre commit.

Veuillez vous référer à Git Branching – Qu’est-ce qu’une twig si vous voulez vraiment comprendre.