¿Cuál debería uno usar para ocultar microcompromisos?
¿Es la única diferencia entre git merge --squash
y git merge --no-ff --no-commit
la denegación de los otros padres?
Estas opciones existen para propósitos separados. Tu repository termina de manera diferente.
Supongamos que su repository es así después de que haya terminado de desarrollar en la twig de tema:
--squash
Si git merge --squash topic; git commit -m topic
compra master y luego git merge --squash topic; git commit -m topic
git merge --squash topic; git commit -m topic
, obtienes esto:
--no-ff --no-commit
En cambio, si haces git merge --no-ff --no-commit; git commit -m topic
git merge --no-ff --no-commit; git commit -m topic
, obtienes esto:
Si realmente desea ocultar (me refiero a eliminar de su repository) sus microcompromisos, use --squash
. Porque, como puede ver en las imágenes de arriba, en realidad no está ocultando sus microcompromisos si no los aplasta. Además, generalmente no empuja sus twigs temáticas al mundo. Las twigs temáticas son para que el tema madure.
Si desea que su historial tenga todos sus microcompromisos, pero déjelos en otra línea de desarrollo (la línea verde en las imágenes de arriba), use --no-ff --no-commit
. Pero recuerde que a) esta no es una twig, yb) realmente no significa nada en Git porque es solo otro padre de su compromiso.
Consulte las ramificaciones de Git: qué twig es si realmente quiere entender.