Quelles sont les différences entre "--squash " et "--no-ff --no-commit"?
Que l'on doit on utiliser pour cacher microcommits?
Est la seule différence entre git merge --squash
et git merge --no-ff --no-commit
la négation de l'autre des parents?
Vous devez vous connecter pour publier un commentaire.
Les différences
Ces options existe à des fins distinctes. Le référentiel se termine différemment.
Supposons que votre dépôt est comme ça, après vous avez terminé la phase de développement sur le thème de la branche:
--squash
Si vous checkout master puis
git merge --squash topic; git commit -m topic
, vous obtenez ceci:--no-ff --no-commit
Au lieu de cela, si vous ne
git merge --no-ff --no-commit; git commit -m topic
, vous obtenez ceci:Cacher micro-s'engage
Si vous voulez vraiment à la peau (je veux dire supprimer à partir de votre référentiel) de votre micro-s'engage, à l'utilisation
--squash
. Parce que, comme vous pouvez le voir dans les images ci-dessus, vous n'êtes pas vraiment cacher votre micro-s'engage, si vous n'avez pas de squash. En outre, vous n'avez pas l'habitude de pousser votre sujet branches dans le monde. Sujet branches sont un sujet d'obtenir mature.Si vous voulez que votre histoire d'avoir toute votre micro-s'engage, mais de les laisser dans une autre ligne de développement (la ligne verte dans les images ci-dessus), utilisez
--no-ff --no-commit
. Mais s'il vous plaît rappelez-vous que ce n'est pas une branche, et b) n'a pas vraiment dire quoi que ce soit dans Git, car il est juste un autre parent de votre livraison.Veuillez vous référer à Git Ramification - Ce qu'une Branche Est si vous voulez vraiment comprendre.
-no-ff
à ne masquer les micro-s'engage? -> stackoverflow.com/a/2850413/321973--no-ff
est-à-dire à git "Ne pas d'abord de l'avant, même si vous le pouvez. au lieu de créer une fusion s'engager et à la réutilisation de tous les commet."--no-ff
conserve que la répartition des--squash
n'. Oui, vous pouvez masquer votre micro-s'engage dans le développement de la ligne, mais cela ne veut pas dire une autre branche comme vous l'avez décrit ci-dessus. Parce que vous êtes la fusion de la direction du développement pour le maître, il n'est plus distinct, direction.-no-ff --no-commit
ne cache pas le l'existence de micro-s'engage, tandis que--squash
n'", et c'est la seule différence, j'avais accepter cette réponse