Copie la sucursal remota a la sucursal local en Git
-
la última y mejor manera de copiar una sucursal remota a una sucursal local en Git -
git switch -c
-
el método antiguo para copiar una sucursal remota a una sucursal local en Git -
git checkout
-
Copie la sucursal remota a la sucursal local en Git con la opción
--copy
en el comandogit branch
- Diferencia entre Git Copiar y Clonar
Este tutorial demostrará cómo usar el nuevo comando git switch -c
para copiar una rama remota a una rama local. Discutiremos dos formas más antiguas de hacer esto: la rama remota git checkout
a local y la rama git con el indicador -c
.
Solo copiamos los contenidos a una sucursal local, pero no creamos ninguna relación de seguimiento con el control remoto. El caso de uso aquí es crear una copia de seguridad o explorar los contenidos, pero no queremos fusionar los cambios en la rama remota.
la última y mejor manera de copiar una sucursal remota a una sucursal local en Git - git switch -c
Anteriormente, el comando git checkout
estaba sobrecargado para múltiples propósitos. Se registra en una rama diferente y restaura los cambios de una confirmación.
Esto generó mucha confusión entre los desarrolladores.
Las versiones más recientes de Git (Git v2.23, Q3 2019 y posteriores) introdujeron un nuevo comando: git switch
para ingresar a una rama diferente. Con su opción --create
, podemos usarlo para crear una nueva rama si no existe antes de cambiar a ella.
Este es ahora el método mejor recomendado para copiar un control remoto a una sucursal local.
Configuramos un repositorio remoto con algunas ramas y las enumeramos con el comando git branch
.
git branch -a
En el repositorio remoto, se ve así:
Copiaremos la rama llamada another_branch
a nuestro repositorio local.
Primero, buscaremos las sucursales remotas en nuestro repositorio local con el comando git fetch
.
git fetch --all
Vemos que esto obtiene las ramas remotas.
Ahora creamos una copia de origin/another_branch
con el comando git switch
.
Pasamos un par de opciones: el indicador -c
para crear la nueva rama de copia (no existe de antemano). También damos la opción --no-track
porque solo queremos una copia de la rama y no un clon (más adelante en esta publicación).
git switch -c <new_branch> <old_branch> --no-track
Este comando ha creado una nueva copia con el nombre nueva_copia_local
y ha cambiado (marcado) en ella.
Si ahora enumeramos todas las ramas en nuestro repositorio local, la rama copiada, nueva_copia_local
, no rastrea la rama que copiamos, otra_rama
.
Lo mejor es usar el git switch remote branch
para hacer una copia en nuestro repositorio local.
el método antiguo para copiar una sucursal remota a una sucursal local en Git - git checkout
git checkout
era un comando que hacía muchas cosas en versiones antiguas de Git. Uno de ellos estaba cambiando a otra sucursal.
Git checkout remote branch to local era, por lo tanto, el antiguo método para hacer una copia local.
Primero nos registramos en la rama remota que queremos copiar. (Asegúrate de buscar las ramas primero).
git checkout <remote_branch>
A continuación creamos una nueva copia de esta rama con el comando git branch
. Volvemos a pasar la opción --no-track
porque no queremos crear ninguna relación de seguimiento entre las dos ramas.
git branch <new_branc> --no-track
Vemos a continuación que la rama recién creada no rastrea la antigua rama remota.
Entre esta forma antigua y el comando git switch
recientemente introducido, el comando git branch
aprendió la opción --copy
para copiar una rama. Ahora veremos cómo copiar un control remoto en una nueva sucursal local con este método.
Copie la sucursal remota a la sucursal local en Git con la opción --copy
en el comando git branch
Es un procedimiento de dos pasos.
Primero verificamos la sucursal remota con el comando git checkout
. Tenga en cuenta la opción --no-track
.
git checkout <old_branch> --no-track
A continuación, copiamos en una nueva rama pasando el indicador -c
(para --copy
) al comando git branch
.
git branch -c <old_branch> <new_branch>
Nuevamente, puede ver a continuación que la nueva copia no rastrea la rama anterior.
Diferencia entre Git Copiar y Clonar
Git copy
no es lo mismo que Git clonar
. Hay algunas diferencias sutiles.
-
Cuando copia una rama, la nueva rama no rastrea la rama anterior. Significa que no hay conexión entre los dos: la nueva rama simplemente ha copiado el contenido de la rama anterior.
Sin embargo, un
clon
rastrea la antigua rama. Esto significa que puede empujar, extraer, fusionar, reorganizar y usar estos comandos en su forma estándar sin pasar argumentos explícitos: la relación de seguimiento completa los nombres de las ramas automáticamente. -
En Git, la clonación está optimizada para la eficiencia. Por lo tanto, cuando clona, la nueva rama no obtiene los registros, configuraciones y ganchos de la rama anterior.
Una
copia
también copia todo esto. Es vital en algunos casos, por ejemplo, cuando intentas recuperar confirmaciones perdidas con la ayuda dereflog
. -
Una operación de
copia
de Git tiene algunos casos de uso típicos, más comúnmente, para crear una copia de seguridad de una sucursal remota. Otro caso de uso es cuando un desarrollador quiere descargar y explorar una rama de función remota interesante sin ninguna intención de enviar sus cambios a la base de código principal.