git – se trata de la divergencia de origen / maestro

En un proyecto en particular, estoy usando git para trabajar en un tenedor de un repository compartido. En este fork solo yo (y de vez en cuando un bot como requires.io ) he llevado commits a origin/master , por lo que existe la preocupación de sobreescribir el trabajo de otro miembro del equipo.

Recientemente, envié bastantes confirmaciones a un origin/master de mi tenedor y más tarde, me di count de que algunas de esas confirmaciones no eran sensatas y deseaba editarlas o revertirlas. Por lo tanto, tomé una copy de la última versión del código en el disco, revertí aproximadamente 30 confirmaciones y empujé el encabezado revertido a origin/master .

Luego reescribí la copy local del repository (que ahora tenía aproximadamente 30 compromisos antes del origin/master ). Ahora git dice que mi HEAD local se ha separado de origin/master y tiene 30 y 18 commits diferentes cada uno.

Tengo dos preguntas sobre esto. Obviamente, quiero que mis confirmaciones locales se pull --rebase a origin/master , no quiero pull --rebase y permitir que mis confirmaciones locales sean sobrescritas por las confirmaciones remotas. ¿Hay una manera simple de hacer esto sin abrir una herramienta de combinación con frecuencia?

En segundo lugar, esto parece muy complicado. ¿Qué flujo de trabajo debería usar para evitar este tipo de situación? No es probable que presionar con less frecuencia sea una opción útil, ya que los errores cometidos que estaba tratando de solucionar tienen que ver con un file YAML de travis.ci , que solo puedo probar de forma útil presionando en origin/master .

Nunca, nunca, vuelva a ajustar el control remoto cuando haya otras personas empujando o tirando de él. De lo contrario, vas a molestar y frustrar a muchas personas.

Para hacer esto, simplemente no presiones tus compromisos hasta que estés satisfecho con ellos.

Para revertir commits que ya han sido empujados, use la herramienta git revert para crear un commit revertido y luego presione eso.

Esta es generalmente la forma en que funciona mi flujo de trabajo.