¿Cómo rebase y empuje eficientemente una sucursal local de git?

Estamos usando un repository git central que he clonado y estoy trabajando en una sucursal local.

Cuando quiero que mis cambios estén disponibles en el repository central, tengo que emitir los siguientes commands (comenzando en mybranch ):

 #Stash local changes not yet ready for checkin git stash #Make sure we have all changes from the central repository git checkout master git pull #Rebase local changes git checkout mybranch git rebase #Push changes git checkout master git merge mybranch git push #Back to my branch and continue work git checkout mybranch git stash apply 

Me gustaría saber si es posible usar less commands de git para lograr el mismo objective. Los diversos cambios entre master y mybranch son especialmente molestos, ya que nuestro repository es bastante grande, por lo que mybranch poco de time.

No es necesario tocar la twig maestra local si no necesita actualizarla y esto parece estar causando una gran cantidad de cambios de twig innecesarios.

Este es un flujo de trabajo más mínimo.

 git fetch # ensure that everything is committed # perhaps git commit -a is requinetworking... git rebase origin/master # If you don't want to push the very latest commits you might # want to checkout a parent or ancestor of the current commit # to test that the proposed commit passes tests, etc. # eg git checkout HEAD~n # push to the remote master git push origin HEAD:master # if you checked out a parent, go back to the original branch git checkout mybranch 

Si tiene mucha confianza sobre la confirmación de un padre, puede omitir los pasos de salida y simplemente hacer lo siguiente, pero recomiendo encarecidamente que no lo haga. Publicar compromisos no probados no es una "mejor práctica".

 git push origin HEAD^:master 

No es necesario hacer el tirón en las twigs maestra y mybranch. Como eres un buen ciudadano y haces actualizaciones rápidas, es bastante sencillo:

 # Save local mods not ready for commit git stash # Do the pull & rebase local work assuming this is a remote tracking branch git pull --rebase git checkout master git merge mybranch git push 

Por supuesto, también puede presionar desde su twig mybranch

 # Save local mods not ready for commit git stash # Do the pull & rebase local work assuming this is a remote tracking branch git pull --rebase git push origin mybranch:master 

Podría combinar el arrastre y la rebase en uno:

git pull –rebase master

Pero en general, sí, desde mi experiencia implica todos estos commands.

Para mantener limpio el repository, es útil ejecutar "git gc", que eliminará los objects no utilizados. Esto debería networkingucir el time de cambio de twig.

Por lo general, lo hago.

 git co master git pull git rebase master mywrk # fix conflicts if any git rebase mywrk master git push 

Puede definir alias para save la escritura, si así lo desea.