2011-04-20 44 views
11

Tengo 3 sucursales locales y 3 remotas y quiero estar en la misma rama en ambas.Cómo cambiar a una rama remota diferente en git

a nivel local:

git branch 
    A 
* B 
    master 

git branch -r 
    origin/A 
    origin/B 
    origin/master 

del mando a distancia:

git branch 
    A 
    B 
* master 

soy capaz de comprometerse, empujar y tirar B pero mi actualización de gancho despliega maestro en lugar de B, supongo porque la rama remota todavía está configurada como maestra. He creado la rama B usando:

git branch B 
git checkout B 
git push origin B 

Respuesta

4

Por lo que yo sé, no hay manera de cambiar la rama actual de un mando a distancia con git push. Empujar copiará sus cambios locales en ese repositorio. Por lo general, los controles remotos a los que presiona deben ser --bare, sin un directorio de trabajo (y por lo tanto no hay "rama actual").

+0

Creo que tienes razón y este no era mi problema de todos modos. El problema es que estoy usando el gancho de actualización y, por lo tanto, el archivo git dentro de él no recibe la última confirmación, o algo así. Todo lo que sé es que mi sucursal desplegada es una comisión detrás del impulso local – sanon

+0

¿Podría publicar partes relevantes de su script de gancho? – dahlbyk

+0

Este es mi archivo hook 'git archive $ 1 | tar -x -C/local/B/rsync -arq \ --excluir ".git" \ --delete --delete-excluded \/local/B/me @ dev:/remotedev/html/B/' – sanon

13

A continuación se muestra mi método para cambiar y trabajar para una rama remota de un repositorio de git.

Tener una mirada para todas las ramas en primer lugar, con tan sólo introducir siguiente comando en el terminal:

git branch --all 

Y a continuación, podrás ver los todas las ramas en local y remoto. Algo como esto:

*master 
remotes/origin/develop 
remotes/origin/master 
remotes/origin/web 
remotes/origin/app 

Vamos a suponer que desea cambiar a la rama remotes/origin/develop. Escriba lo siguiente:

git checkout remotes/origin/develop 

continuación, escriba git branch --all de nuevo para encontrar esto:

*(detached from remotes/origin/develop) 
master 
remotes/origin/develop 
remotes/origin/master 
remotes/origin/web 
remotes/origin/app 

Y luego simplemente hacer:

git checkout -b develop 

A partir de ahora, se está trabajando en la rama remotes/origin/develop exactamente.

Cuestiones relacionadas