La mejor práctica para cometer una corrección de errores tanto en el maestro como en la sucursal

Si es necesario comprometer una solución tanto en el maestro como en otra sucursal (en un repository compartido remoto), ¿cuál es la mejor práctica? Dado que no podemos usar git merge aquí porque no todas las confirmaciones en master o branch deben pasar a otra, ¿es Cherry Pick la mejor opción?

Ejemplo:

comprometer FIX para dominar

caja registradora

cherry-pick FIX de master y push

¿Cherry-pick tiene el mismo problema que rebase (nunca rebase si se va a compartir el compromiso)?

cherry-pick es una buena opción en tu caso!

¿Cherry-pick tiene el mismo problema que rebase (nunca rebase si se va a compartir el compromiso)?

Cherry-pick no tiene ningún problema, como rebase , porque funciona de manera rebase : lee la diferencia para la confirmación que estás rebase al rebase y aplica el parche a la branch . Esto no destruye la historia (como rebase ). Después de la operación, estas confirmaciones no se acoplarán de ninguna manera.

La práctica preferida debería ser hacer la corrección en una twig que es la base común de todas las twigs donde la fusión debe fusionarse, y fusionar esa confirmación en todas las twigs de destino. Esto le permite tener una correspondencia entre "es la confirmación A en la twig B" y "es la solución para la falla A en la twig B".

Si no posee una twig de este tipo de forma natural, puede crear una temporal desde un punto adecuado de la historia, por ejemplo, encontrarla usando git merge-base .

Las circunstancias donde esto puede resultar problemático es cuando las twigs se han separado tanto que esencialmente se necesita marcar la diferencia para resolver el mismo problema en cada twig.

P.ej

 git checkout -b quickfix $(git merge-base master branch) # Note, you may want to check 'git merge-base -a' and choose the best one # code, code code git add <modified files> git commit -m "Fix for pressing issue" git checkout master git merge quickfix # Review merge and test result, fixup merge if necessary git checkout branch git merge quickfix # Review merge and test result, fixup merge if necessary # Optionally, push all branches to 'origin' git push origin branch master 

Cherry Pick es la elección correcta.

Comprométete a dominar, y elige también el compromiso en tu sucursal.

No entiendo su comparación con rebase , pero tenga en count que la selección de cereza crea un compromiso completamente nuevo (por supuesto, porque el padre y otros metadatos van a ser diferentes)

Si descartó fusionar, en realidad, cherry-pick queda como la única opción. Primero, presione el maestro, luego elija bifurcar usando el formulario que agrega el hash del original al post de confirmación.

El problema con las selects es que crean una nueva confirmación y eso hace que sea realmente difícil saber qué contiene realmente. Intenta conservar la mayor cantidad posible de información de relación.