2010-02-11 17 views
10

Estoy trabajando con un git repo que tiene un maestro vacío y varias ramas. Cuando hago un tira y afloja, solo parece tirar cosas hacia abajo para el maestro, pero no se aplica a las ramas.Cómo obtener git para realizar cambios en todas las ramas

Tengo que hacer git checkout branch; git pull por cada rama antes de que pueda presionar. ¿Hay un comando o interruptor que pueda usar que haga

Tire y aplique los cambios a todas las ramas y al maestro?

+0

Cuando tira, obtiene todas las ramas en sus copias locales (las cosas bajo controles remotos/origen/...), por lo que no necesita ejecutar 'git pull' cada vez, simplemente cambie de rama y haga git merge origen/branch. – ebneter

+0

posible duplicado de [Can "git pull --all" actualizar todas mis sucursales locales?] (Http://stackoverflow.com/questions/4318161/can-git-pull-all-update-all-my-local-branches) – Chronial

Respuesta

7

creo que no hay ningún comando o el interruptor debido a lo git pull hace disponible - se obtiene a partir de cambios a distancia (como git fetch) y los fusiona cambios en su rama actual (git merge origin/master o lo que sus vías ramales actuales). El problema no es la primera parte (en realidad, git fetch busca cambios para todas las sucursales remotas), sino que se fusiona: ¿qué se debe hacer cuando tiene conflictos de combinación? Solo puede fusionarse en la copia de trabajo, no en los objetos de git. Y cuando comiences a fusionarte, debes abortarlo o resolver todos los conflictos y crear un commit de fusión.

+0

+1. Sería trivial escribir un guión para hacerlo, por supuesto. – ebneter

4

Tu problema no es con git pull es con git push. Intentar la creación de git sólo para empujar a la rama de la rama actual es el seguimiento (si procede):

git config --global push.default tracking 

Mientras tanto, se está capaz de empujar siempre que lo desee, pero obtendrá avisos de rechazo para ramas que no avancen rápidamente en push. Esas son a menudo ramas en las que no estás trabajando, así que no te importan demasiado.

La configuración anterior le dará un comportamiento un poco más sensible cuando no especifica qué empujar.

+0

¡Agradable! No estaba al tanto de la opción de configuración push.default. La página de manual de git-push ofrece una solución alternativa pero similar: git config remote.origin.push HEAD –

Cuestiones relacionadas