origin force example git merge git-merge fast-forward squash

git - force - ¿Cuáles son las diferencias entre `--squash` y`--no-ff--no-commit`?



git merge--no-ff example (1)

Las diferencias

Estas opciones existen para fines separados. Su repositorio termina de manera diferente.

Supongamos que su repositorio es así después de que haya terminado de desarrollar en la rama de tema:

--squash

Si selecciona 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:

Ocultar micro-cometidos

Si realmente desea ocultar (me refiero a eliminar de su repositorio) sus micro-confirmaciones, use --squash . Porque, como puede ver en las imágenes anteriores, no está ocultando realmente sus micro-confirmaciones si no aplasta. Por otra parte, por lo general no impulsas las ramas de tus temas al mundo. Las ramas del tema son para que el tema madure.

Si desea que su historial tenga todos sus micro-compromisos, pero déjelos en otra línea de desarrollo (la línea verde en las imágenes anteriores), use --no-ff --no-commit . Pero recuerde que a) esto no es una rama, yb) en realidad no significa nada en Git porque es solo otro padre de su compromiso.

Consulte Git Branching - Qué es una sucursal si realmente quiere entender.

¿Cuál debería usarse para ocultar los microcomités?

¿Es la única diferencia entre git merge --squash y git merge --no-ff --no-commit la negación de los otros padres?