¿Cuáles son las diferencias entre " --calabaza` y `--no-ff --no-commit`?


¿Cuál se debe usar para ocultar los microcompromisos?

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

Author: Tobias Kienzler, 2012-08-16

1 answers

Las diferencias

Estas opciones existen para propósitos separados. Su repositorio termina de manera diferente.

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

introduzca la descripción de la imagen aquí

--squash

Si realizas el checkout master y luego git merge --squash topic; git commit -m topic, obtienes esto:

introduzca la descripción de la imagen aquí

--no-ff --no-commit

En cambio, si lo haces git merge --no-ff --no-commit; git commit -m topic, obtienes esto:

introduzca la descripción de la imagen aquí

Ocultando micro-commits

Si realmente quieres ocultar (quiero decir eliminar de su repositorio) sus micro-commits, use --squash. Porque, como puedes ver en las imágenes anteriores, realmente no estás ocultando tus micro-commits si no lo haces. Además, por lo general no empujas tus ramas temáticas al mundo. Las ramas temáticas son para que el tema madure.

Si quieres que tu historial tenga todos tus micro-commits, pero dejarlos en otra línea de desarrollo (la línea verde en las imágenes de arriba), usa --no-ff --no-commit. Pero por favor recuerda que a) esto no es una rama, y b) realmente no significa nada en Git porque es solo otro padre de tu commit.

Por favor refiérase a Ramificación de Git - Qué es una Rama si realmente quiere entender.

 44
Author: Yasushi Shoji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-16 10:46:36