2012-07-06 14 views
36

Quiero una "copia" exacta de una rama remota "copiada" a una rama local específica.Cómo obtener/copiar limpiamente una rama remota de git en el repositorio local

Digamos, por ejemplo, que un miembro del equipo ha creado una función experimental, que ha registrado en una rama llamada experiment en el repositorio remoto. Quiero ser capaz de retirar una nueva rama en mi repositorio local, y "copia" del experiment rama, que está, a mi rama recién desprotegido.

No quiero fusionarlo con mi código: quiero sobrescribir completamente mi código para que pueda tener una idea clara de lo que ha hecho en la rama "experimento".

¿Cómo podría uno "obtener" (buscar/arrastrar/lo que sea ...) una rama remota que otra persona haya asignado al repositorio remoto en su propio repositorio local, de una manera que no intente realizar una fusión en tu propio código local?

+0

Me gusta mantener una copia separada de mi repositorio local para casos como este. No solo te salva de errores, sino que me permite trabajar en paralelo. – user1164937

Respuesta

67

Si no se preocupan por la fusión:

git reset --hard <remote>/<branch_name> 

Esto va a hacer exactamente lo que quiere: sin fusión, sin cambio de base, en pocas palabras la rama local para exactamente el mismo estado que el control remoto está.

En su caso, sin embargo, no es necesario. Que desea crear una nueva rama local que tiene el mismo estado que el mando a distancia, por lo que especifique la rama remota al crear un local con git checkout:

git checkout -b <my_new_branch> <remote>/<branch_name> 

Se podría utilizar git reset --hard si ya tiene una sucursal local (por ejemplo, con algunos cambios), descarte las modificaciones que realizó y, en su lugar, tome la versión exacta de la rama remota.

Para asegurarse de tener el último estado de la sucursal remota, use git fetch <remote> antes de salir o restablecerse.

+7

No restablecer para descartar los cambios. Haz git stash en su lugar. Mucho más seguro –

+2

Esto no funcionó al principio, pero eso se debe a que no comencé buscando el control remoto. – David

+0

No entiendo esta respuesta. ¿Introduce "remote/" o "/" sustituyendo "origen" u otra cosa por ? – William

Cuestiones relacionadas