git flujo de trabajo para la fusión utilizando compromisos de avance rápido

Uso git en varios proyectos con muchos desarrolladores. Mi flujo de trabajo habitual es realizar una bifurcación local para una característica / request específica, fusionar mis cambios en una twig local rastreada en sentido ascendente como una fusión de avance rápido y cambios de inserción. Siempre ramifico para incluso un compromiso simple. Nunca me comprometo localmente en una twig que comparto con otras personas, por lo que soy libre de volver a clasificar / analizar localmente hasta que actualice mis cambios. Como cuestión de preference, me gusta que mis fusiones sean compromisos rápidos siempre que sea posible. Como ejemplo, si todos los desarrolladores de la versión 1 de un proyecto son empujados por todos los desarrolladores en la twig de origin/v1 , yo:

 git checkout v1 git checkout -b feature-A #Do work on feature-A branch. Test, rebase --interactive to clean up 

Eventualmente estoy en el punto donde quiero fusionar mis cambios a v1 localmente y presionar a origin/v1 . Haré un git fetch origin con la feature-A revisada. Si se realizan cambios, pagaré v1 y me fusionaré

 git fetch origin #If New changes are present checkout v1 and merge git checkout v1 git merge origin/v1 #I could pull but I prefer to fetch, log origin/v1, and then merge 

Ahora, para lograr la fusión de avance rápido para la feature-A , feature-A finalización de la compra feature-A , rebase a v1 , pago y envío v1 , fusión de la feature-A y vuelva a enviar v1 al origin .

 git checkout feature-A git rebase v1 git checkout v1 git merge --ff-only feature-A git push origin v1 

No hay nada de malo con las confirmaciones de reenvío no rápido y nada incorrecto con una confluencia de fusión. Nuevamente, es solo una cuestión de preference. Me pregunto si hay un mejor flujo de trabajo para lograr lo mismo sin pasar por todas las salidas de las sucursales. Es posible que exista un command git que desconozco y que funcionaría después de volver a configurar la feature-A en la parte superior de la twig v1 actualizada.

http://sofes.miximages.com/a/4157106/620304 parece que podría ayudar. Un posible flujo de trabajo sería actualizar v1 con los últimos cambios desde el origen y actualizar v1 al HEAD de la feature-A localmente después de la rebase:

 #Starting from feature-A currently checked out git fetch origin #New changes are present git checkout v1 git merge origin/v1 git checkout feature-A #In I didn't fetch anything from origin's v1 branch I can skip the commands between the comments git rebase v1 git branch -f v1 feature-A git push origin v1 

Estoy seguro de que podría haber una manera aún mejor. Cualquier ayuda / input es muy apreciada.

Un flujo de trabajo que utiliza solo fusiones rápidas es esencialmente un flujo de trabajo de rebase. El flujo de trabajo de rebase general funciona de forma muy similar al ejemplo que usted proporcionó, a exception de git rebase origin/v1 lugar de fusionarse.

El artículo más referencedo que he visto es la publicación de blog de Randy Fay: Un flujo de trabajo de Rebase para Git .

Asegúrese de leer el artículo de seguimiento, vinculado al comienzo de este, para algunos atajos para que sea fácil de usar.