Vale, si deseas comprender esto debes consultar la documentación oficial de Git y un tanto más los internals.
Una cosa es el git-flow (lo que ya sabes) y otra muy aparte cómo funciona Git de manera interna.
Sólo deberías preocuparte por el git-flow, sin embargo te adelanto lo que ya sé:
- Git no monitorea tus archivos, es decir, no existe ningún proceso
in-background que haga dicho monitoreo en tiempo real. Las tareas de Git se disparan únicamente son invocadas.
- Para regresar a versiones previas de algún archivo puedes usar cherry-pick y aplicar el commit que contenga dicha versión. Si en un commit registras dos archivos al usar cherry-pick aplicará el parche sobre ambos archivos, te cuidado con ahí.
- Ningún cambio es destructivo mientras no toques la carpeta privada de .git en tu proyecto, si borras algo y después lo ubicas con reflog entonces es recuperable.
- Cuando creas una rama se usa la rama actual como base para la nueva, no es que se destruya todo y comiencé de cero cada vez.
¿Tutoriales?
Sí, hay muchos en Internet, te sugiero algunos en inglés pues están mejor explicados.