¿Cómo sincronizar dos twigs en el mismo repository de Git?

Aquí hay un obstáculo de flujo de trabajo común que encuentro a menudo:

maestro es nuestra twig "estable"

$ git status # On branch master nothing to commit (working directory clean) 

crear un module en una twig

 $ git checkout -b foo $ echo "hello" > world $ git add . $ git commit -m "init commit for foo module" $ git checkout master $ git merge foo 

trabajar en el maestro u otras twigs

Durante las próximas dos semanas, más código se comprometerá a dominar directamente y por otras twigs. foo twig foo no se tocará durante este período de time

reanudar el trabajo / hacer actualizaciones en la sucursal foo

 $ git checkout foo 

¡Oh no! foo está masivamente fuera de date! Entiendo por qué , pero necesito que foo vuelva a estar sincronizado.

la pregunta

¿Cómo obtengo los últimos contenidos de la twig master ?

Si no necesita la twig alnetworkingedor:

Si fusionó foo con master, "git branch -d foo" para eliminar la twig de tema, y ​​luego "check-out foo" en el futuro cuando necesite hackearlo de nuevo.

Si necesitas la twig alnetworkingedor:

Puede volver a establecer la base de su twig de tema en la twig principal:

 git checkout foo git rebase master 

O:

 git rebase master foo 

El siguiente ejemplo combina git rebase con git merge para mantener un historial de proyecto lineal. Esta es una manera rápida y fácil de garantizar que sus fusiones se reenvíen rápidamente.

 # Start a new feature git checkout -b new-feature master # Edit files git commit -a -m "Start developing a feature" 

En el medio de nuestra function, nos damos count de que hay un agujero de security en nuestro proyecto

 # Create a hotfix branch based off of master git checkout -b hotfix master # Edit files git commit -a -m "Fix security hole" # Merge back into master git checkout master git merge hotfix git branch -d hotfix 

Después de fusionar la revisión en maestro, tenemos un historial de proyecto bifurcado. En lugar de una simple fusión de git, integraremos la twig de características con una rebase para mantener un historial lineal:

 git checkout new-feature git rebase master 

Esto mueve la function nueva a la punta del máster, lo que nos permite hacer una fusión estándar de avance rápido desde el máster:

 git checkout master git merge new-feature 

Tomado de Atlassian Git Rebase Tutorial