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?