Un colega empujó una nueva rama remota a origin / dev / homepage y no puedo verla cuando ejecuto:
$ git branch -r
Todavía veo ramas remotas preexistentes.
Supongo que esto se debe a que mis referencias remotas locales no están actualizadas, por lo tanto, cuando ejecuté un git pull, no pasó nada, ya que git pull solo extrae la rama de trabajo actual, ¿correcto? ¿A diferencia de git push que empuja todas las ramas que tienen cambios a la rama remota correspondiente?
git
remote-branch
híbrido9
fuente
fuente
git pull
, graciasgit fetch <name-of-remote>
funcionó. Sin el nombre del control remoto, NO funcionó.Respuestas:
Primero, verifique que la rama haya sido enviada de forma remota mediante el comando
git ls-remote origin
. Si la nueva rama aparece en la salida, intente dar el comandogit fetch
: debería descargar las referencias de la rama desde el repositorio remoto.Si su rama remota aún no aparece, verifique dos veces (en la
ls-remote
salida) cuál es el nombre de la rama en el control remoto y, específicamente, si comienza conrefs/heads/
. Esto se debe a que, de forma predeterminada, el valor deremote.<name>.fetch
es:de modo que solo las referencias remotas cuyo nombre comienza con
refs/heads/
se mapearán localmente como referencias de seguimiento remoto enrefs/remotes/origin/
(es decir, se convertirán en ramas de seguimiento remoto)fuente
git fetch
, git descargará las referencias del repositorio remoto predeterminado que se ha especificado en.git/config
: generalmente se llamaráorigin
, por lo que ambos comandos son equivalentes, pero su configuración específica puede ser diferente por alguna razón. No, no es necesario dargit fetch
por cada rama, ya que (por defecto) recupera todas las ramas.git pull
es equivalente agit fetch
+git merge
(ogit rebase
si ha cambiado los valores predeterminados), por lo que puede seguir usandogit pull
como de costumbre, y las nuevas ramas remotas aparecerán por sí mismas.git ls-remote gerritrepo:project
muestra la nueva rama remota perogit branch -a
no ... Tengo que hacer otro clon y solo entonces aparecerá la nueva ramaCompruebe si
.git/config
contieneSi es así, cámbielo para decir
Entonces deberías poder usarlo:
fuente
brew tap user/repo
: la copia local del repositorio clonado porbrew
tenía la configuración que mencionaste y no era posible ver y usar las otras ramas que tenía en mi repositorio. ¡Gracias de nuevo! :) +1!git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
y luegogit fetch origin
obtener todas las ramas en origen .La respuesta más simple es:
git fetch origin <branch_name>
fuente
fatal: Couldn't find remote ref <branch_name>
Hacer una actualización remota de git también actualizará la lista de ramas disponibles desde el repositorio remoto.
Si está utilizando TortoiseGit, a partir de la versión 1.8.3.0, puede hacer "Git -> Sync" y habrá un botón "Actualización remota" en la parte inferior izquierda de la ventana que aparece. Haga clic en eso. Entonces debería poder hacer "Git -> Switch / Checkout" y hacer que la nueva rama remota aparezca en el menú desplegable de ramas que puede seleccionar.
fuente
git remote update
es una forma antigua de hacer esto, el comando preferido más nuevo esgit fetch
.Digamos que estamos buscando la versión 1.0.5.
Cuando no
git fetch -all
está funcionando y no puede ver la rama remota ygit branch -r
no mostrar esta rama específica.1. Imprima todas las referencias desde remoto (sucursales, etiquetas, ...):
git ls-remote origin
Debería mostrarte la rama remota que estás buscando.La nueva rama 'release / 1.0.5' aparece en la salida.
2. Forzar la búsqueda de una rama remota:
git fetch origin <name_branch>:<name_branch>
Ahora también tiene las referencias localmente, realiza el pago (o lo que sea) de esta rama.
¡Trabajo hecho!
fuente
Suena trivial, pero mi problema era que no estaba en el proyecto correcto. Asegúrese de estar en el proyecto en el que espera estar; de lo contrario, no podrá tirar de las ramas correctas.
fuente
Usé fuerza bruta y quité el control remoto y luego lo agregué
fuente
Lo que finalmente funcionó para mí fue agregar el nombre del repositorio remoto al
git fetch
comando, así:Ahora puedes verlos todos así:
fuente
Puede verificar la rama remota / n git fetch && git checkout remotebranch
fuente