git push, no push all local commits

Soy nuevo en git y lo estoy probando ahora mismo. En mi máquina local hago commits frecuentes. A intervalos quiero insert el código en un repository central. En este momento, publico todos los commits realizados. Cuando trabajo solo esto no es un gran problema, pero cuando trabajo con varios desarrolladores en un proyecto, esto se vuelve caótico. Mientras tanto, me gustaría tener todas las confirmaciones locales conservadas en mi máquina local, por si acaso.

¿Es esta una buena manera de trabajar con git? es posible? ¿O estoy pensando de la manera incorrecta?

Una forma de lidiar con esto es hacerse una twig de desarrollo personal en su repository local. Es solo una bifurcación regular, nada especial, pero las confirmaciones de la sucursal no se enviarán al depósito central cuando ejecute git push . Cuando esté listo para compartir sus cambios, combine las confirmaciones de su twig personal en la twig principal y luego puede enviarlas al repository central.

Una variación de esto sería comenzar una nueva twig para cada característica lógica en la que trabaje, para que tenga muchas twigs de desarrollo personal pequeñas en lugar de una gran. Luego puede eliminar las twigs de características una vez que las combina en la twig principal.

El flujo de trabajo de Git lo anima a limpiar sus compromisos locales (temprano y a menudo) en una secuencia lógica de compromisos que llevan al lector eventual paso a paso a través de la implementación de su nuevo trabajo. Esto se puede hacer usando la function git rebase -i y otras herramientas. Con eso, puede reorderar, editar, dividir y aplastar confirmaciones según sea necesario para que todo se vea bien. A continuación, inserte ese set de confirmaciones en el server y, por supuesto, consérvelo también localmente.

Este flujo de trabajo no es obligatorio. Puedes upload todos tus compromisos detallados al server (pero asegúrate de que se vuelven "caóticos"), o puedes aplastar tu trabajo en una única confirmación e impulsarlo. Sin embargo, lo que no se puede hacer razonablemente, es enviar una confirmación al server mientras se mantiene otro set localmente.