Mi colega y yo estamos trabajando en el mismo repositorio. Lo hemos ramificado en dos ramas, cada una técnicamente para diferentes proyectos, pero tienen similitudes, por lo que a veces querremos comprometernos con el * master
desde el branch
.
Sin embargo, tengo el branch
. ¿Cómo puede mi colega sacar esa rama específicamente?
Una parte git clone
del repositorio no parece crear las ramas localmente para él, aunque puedo verlas en vivo sin problemas después de un empujón en mi extremo.
Además, cuando originalmente hice la rama, lo hice -b checkout
. ¿Eso hace mucha diferencia?
$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
$ git fetch origin discover
$ git checkout discover
Estos son los comandos que ejecuté. Pero definitivamente no está funcionando.
Quiero poder revisar esa rama y luego presionar y confirmar solo los cambios de las ramas de varios colaboradores o estaciones de trabajo .
fuente
git fetch --all
luego para ver todas las ramas:,git branch
luego compruebo la rama:git checkout nameofnewbranch
git fetch origin discover:discover && git checkout discover
Respuestas:
Necesita crear una rama local que rastree una rama remota. El siguiente comando creará una rama local llamada daves_branch , rastreando la rama remota origen / daves_branch . Cuando presiona sus cambios, la rama remota se actualizará.
Para las versiones más recientes de Git:
--track
es la abreviatura degit checkout -b [branch] [remotename]/[branch]
donde [remotename] es origen en este caso y [rama] es dos veces lo mismo, daves_branch en este caso.Para Git 1.5.6.5 necesitabas esto:
Para Git 1.7.2.3 y superior, esto es suficiente (podría haber comenzado antes, pero esta es la confirmación más temprana que pude encontrar rápidamente):
Tenga en cuenta que con las versiones recientes de Git, este comando no creará una rama local y lo pondrá en un estado 'HEAD separado'. Si desea una sucursal local, use la
--track
opciónLos detalles completos están aquí: 3.5 Git Branching - Ramas remotas, ramas de seguimiento
fuente
git checkout -b --track daves_branch origin/daves_branch
He usado
fetch
seguido decheckout
...... ¿dónde
<rbranch>
está la sucursal remota o la referencia de origen y<lbranch>
es la sucursal local o la referencia de destino que aún no existe que desea rastrear y que probablemente desee nombrar igual que la sucursal remota o la referencia de origen. Esto se explica en las opciones en la explicación de .<refspec>
Git es tan inteligente que completa automáticamente el primer comando si tabulo después de las primeras letras de la rama remota. Es decir, ni siquiera tengo que nombrar la sucursal local, Git copia automáticamente el nombre de la sucursal remota por mí. Gracias Git!
Además, como muestra la respuesta en esta publicación similar de Desbordamiento de pila , si no nombra la sucursal local
fetch
, aún puede crearla cuando la extraiga utilizando la-b
bandera. Es decir,git fetch <remote> <branch>
seguido degit checkout -b <branch> <remote>/<branch>
hace exactamente lo mismo que mi respuesta inicial. Y, evidentemente, si su repositorio tiene solo un control remoto, puede hacerlogit checkout <branch>
despuésfetch
y creará una sucursal local para usted. Por ejemplo, acaba de clonar un repositorio y desea consultar ramas adicionales desde el control remoto.Creo que parte de la documentación
fetch
puede haber sido copiada literalmentepull
. En particular la sección<refspec>
de opciones es el mismo. Sin embargo, no creo que esofetch
suceda nuncamerge
, de modo que si deja vacío el lado de destino del colon,fetch
no debería hacer nada .NOTA:
git fetch <remote> <refspec>
es la abreviatura de logit fetch <remote> <refspec>:
que, por lo tanto, no haría nada, perogit fetch <remote> <tag>
es lo mismogit fetch <remote> <tag>:<tag>
que debería copiar el control remoto<tag>
localmente.Supongo que esto solo es útil si desea copiar una sucursal remota localmente, pero no necesariamente verificarla de inmediato. De lo contrario, ahora usaría la respuesta aceptada , que se explica en detalle en la primera sección de la descripción del pago y luego en la sección de opciones bajo la explicación de
--track
, ya que es una línea. Bueno ... una especie de frase, porque aún tendrías que corrergit fetch <remote>
primero.FYI: El orden de
<refspecs>
(fuente: destino) explica el extraño método pre Git 1.7 para eliminar ramas remotas . Es decir, no introduzca nada en la referencia de destino.fuente
git fetch remote branch
no agregué un encabezado de rama para mí, aunque todas las referencias se obtuvieron, así que cuando intenté seguir los pasos en la respuesta aceptada, recibí el errorpathspec did not match any file(s) known to git.
, pero elrbranch:lbranch
enfoque funcionó. Curiosamente, también obtuvo todas las etiquetas que comenzaron con el mismo prefijo, como si fuera un comodín (rbranch*
).fetch
comando. Sin embargo, la respuesta aceptada tiene sentido porque OP observa que ya hizo la búsqueda. Ese es al menos el problema con el que me encontré.Si está intentando "pagar" una nueva rama remota (que existe solo en el remoto, pero no localmente), esto es lo que necesitará:
Esto supone que desea buscar desde el origen . Si no, reemplace el origen por su nombre remoto .
fuente
git fetch
ygit fetch remote
harán lo mismo. Si necesita buscar desde un control remoto que no seaorigin
, puede hacerlo usandogit fetch <other_remote_name>
. Esta situación es muy poco común, solo se menciona aquí para completar.Para verificar myBranch que existe de forma remota y no localmente, esto funcionó para mí:
Recibí este mensaje:
fuente
-t
?-t
y obtuveYou are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.
porque no había una rama local del mismo nombre. Tuve que volver a correr-t
para arreglar.checkout
para crearlo. ¡Gracias!--all
nunca es una buena idea, porque descargará todos los archivos en cada rama. Tomará más tiempo y espacio. Es mejor ser específico con el nombre de la sucursal y hacer como esteUse
git branch -a
(ramas locales y remotas) ogit branch -r
(solo ramas remotas) para ver todos los controles remotos y sus ramas. Luego puede hacer ungit checkout -t remotes/repo/branch
a al control remoto y crear una sucursal local.También hay un comando git-ls-remote para ver todas las referencias y etiquetas para ese control remoto.
fuente
git checkout remotes/repo/branch
hace que git checkout busque una ruta específica, no un repositorio remoto.El título y la pregunta son confusos:
Si la pregunta es, ¿cómo puedo obtener una sucursal remota para trabajar o cómo puedo hacer un checkout de Git en una sucursal remota? , una solución más simple es:
Con Git (> = 1.6.6) puede usar:
Si
<branch_name>
no se encuentra local , pero existe una rama de seguimiento en exactamente un control remoto con un nombre coincidente, trátelo como equivalente a:Ver documentación para el pago de Git
Para tu amigo:
fuente
La forma más fácil de hacerlo, al menos para mí:
fuente
fetch
comando, la rama requerida estará disponible en la máquina local.git checkout -b 'your_branch' origin/'remote branch'
Se requiere para pagar esta rama.Utilizar:
Esta es una operación bastante común que Git proporciona la
--track
abreviatura:De hecho, esto es tan común que incluso hay un atajo para ese atajo. Si el nombre de la rama que está tratando de pagar (a) no existe y (b) coincide exactamente con un nombre en un solo control remoto, Git creará una rama de seguimiento para usted:
Para configurar una sucursal local con un nombre diferente al de la sucursal remota, puede usar fácilmente la primera versión con un nombre de sucursal local diferente:
Ahora, su sucursal local
sf
se retirará automáticamenteorigin/serverfix
.Fuente: Pro Git, 2da edición , escrita por Scott Chacon y Ben Straub (corte para facilitar la lectura)
fuente
Con este simple comando:
fuente
Para buscar una rama que existe en remoto, la forma más simple es:
Puede ver si ya existe en el control remoto con:
Esto buscará la rama remota a su local y rastreará automáticamente la remota.
fuente
Lo que me ayudó fue
1) Para ver todas las sucursales remotas disponibles (por ejemplo, 'nombre-sucursal remota')
2) Crear una sucursal local usando el nombre de la sucursal remota
fuente
git push
sin ningún otro argumento? ¿La rama local nombradaremote-branch-name
se asocia automáticamente con (seguimiento a) la rama remota nombradaorigin/remote-branch-name
? ¿O necesitas corrergit push -u origin remote-branch-name
También puede buscar y pagar la rama remota de una vez:
fuente
fuente
escribí
y consiguió
fuente
git checkout -b <branch_name> --track <remote>/<branch_name>
A veces se le pide que no juegue con la rama maestra y trabaje solo con la rama remota (como se me pidió). Entonces, todo lo que necesita es la rama remota.
Entonces, para clonar solo la rama remota (sin el maestro), haga esto
donde, remote_branch_name es el nombre de la rama remota
Por ejemplo,
Esto asegurará que clones la rama remota en tu rama local con el nombre de la rama remota.
Ahora, si confirma su código y lo empuja, el código se enviará solo a esa rama.
fuente
[Respuesta rápida]
Hay muchas alternativas, y mis favoritas son:
- Alternativa 1:
- Alternativa 2:
fuente
Digamos que su control remoto es [email protected] y desea su rama random_branch. El proceso debe ser el siguiente:
Primero revise la lista de sus controles remotos por
Si no tiene el control remoto [email protected] en la salida del comando anterior, lo agregará por
La rama local my_copy_random_branch estaría rastreando la rama random_branch de su control remoto.
fuente
git fetch --all & git checkout <branch name>
fuente
git fetch && git checkout <your friend's branch name>
debería hacer el trucofuente
Quiero darle un comando de línea única para buscar todas las ramas remotas en su local y cambiar a su rama local recién creada deseada:
Después de ejecutar el comando anterior, recibirá el siguiente mensaje:
La primera línea dice que cambió a una nueva rama : ¿por qué nueva? Ya está allí en remoto!
Pero en realidad también debes crearlo localmente. La rama se toma del índice remoto y se crea localmente para usted.
Aquí
discover
hay una nueva rama que se creó a partir de la rama remota de su repositoriodiscover
.Pero la segunda línea da más información que la primera que nos dice que:
Nuestra sucursal está configurada para rastrear sucursales remotas con el mismo nombre.
Aunque
git fetch
recupera todas las ramas a local. Pero si corregit branch
tras él, verá solo unamaster
bifurcación en local. ¿Por qué ?Porque para cada sucursal que tiene en remoto, también debe crearla localmente, para rastrearla como
git checkout <branchname>
como lo hemos hecho en el ejemplo anterior.Después de ejecutar el
git checkout
comando puede ejecutargit branch
, y ahora puede ver tanto la rama:fuente
Si desea obtener todas las ramas remotas, escriba solo:
fuente
Simplemente intente:
fuente
Si tiene un repositorio que se clonó,
--depth 1
entonces muchos de los comandos que se enumeraron no funcionarán. Por ejemplo, mira aquíEn este caso, reclinaría el repositorio, pero quizás existan otras técnicas, por ejemplo, git shallow clone (clone --depth) pierde ramas remotas
fuente
Si ya conoce su rama remota así ...
y conoce el nombre de la sucursal que desea pagar, por ejemplo, br1.2.3.4 , luego
Todo lo que queda es pagar la sucursal
Luego, haga nuevas ramas fuera de él.
fuente
Los pasos son los siguientes;
git fetch origin
ogit fetch --all
, esto buscará todas las ramas remotas a su local y luego esta es la segunda opción con la que puede proceder.git checkout --track origin/<The_remote_branch you want to switch over>
Luego trabaje en esta rama y puede verificar si está en esa rama o no escribiendo
Muestra la rama en la que te encuentras actualmente.
fuente
git branch <name> --track origin/<name>
fuente
Verifique su
.git/config
archivo, particularmente qué seguimiento está presente en la búsqueda de ese control remoto.Si tiene
heads/*
apuntando arandomRemote/*
, cuando corresgit fetch randomRemote
, buscará todas las ramas.Entonces puedes pagar esa rama.
De otra manera,
Debe agregar ramas remotas al seguimiento con esto. Comprueba tu
.git/config
después de ejecutar esto. Tu entenderás.Ejecutar
git fetch randomRemote
. Esto buscará la rama remota.Ahora puedes correr
git checkout randomBranch
.fuente
Utiliza 'git pull' para mantener tus ramas separadas. Usaré el repositorio real y los nombres de las ramas para ayudar, ya que 'lbranch' y 'rbranch' son difíciles de descifrar.
Vamos a usar:
Usted, o cualquier colega, puede ejecutar esto para extraer solo su rama, sin importar cuántas ramas haya:
fuente
Un comando simple
git checkout remote_branch_name
lo ayudará a crear una rama local que tenga todos los cambios en la rama remota.fuente
fuente