buscar en git no obtiene todas las ramas

Resuelto Edward Newell asked hace 12 años • 13 respuestas

Cloné un repositorio, después de lo cual alguien más creó una nueva rama en la que me gustaría comenzar a trabajar. Leí el manual y parece muy fácil. Curiosamente, no funciona y todas las publicaciones que encontré sugieren que estoy haciendo lo correcto. Así que me someteré a las críticas, porque debe haber haber algo malo en esto:

La acción correcta parece ser

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

En este punto hay un problema, por alguna razón git fetchno puedo ver la rama remota dev-gml. ¿Por qué no? Si clono el repositorio recientemente, está allí, por lo que ciertamente la rama remota existe:

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

He probado git update, git pull, git fetch --all, git pretty-pleaseen todas las permutaciones posibles...

Edward Newell avatar Jul 24 '12 10:07 Edward Newell
Aceptado

El problema se puede ver al verificar la remote.origin.fetchconfiguración
(las líneas que comienzan con $son mensajes de bash con los comandos que escribí. Las otras líneas son el resultado resultante)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

Como puede ver, en mi caso, el control remoto estaba configurado para recuperar la rama maestra específica y únicamente. Lo arreglé como se muestra a continuación, incluido el segundo comando para verificar los resultados.

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

El comodín, *por supuesto, significa todo lo que se encuentra bajo ese camino.

Desafortunadamente, vi este comentario después de haber investigado y encontrado la respuesta mediante prueba y error.

AndASM avatar Sep 19 '2014 20:09 AndASM

Tuve este problema hoy en un repositorio.

No era el +refs/heads/*:refs/remotes/origin/*problema según la solución principal.

El síntoma era simplemente eso git fetch origino git fetchsimplemente no parecía hacer nada, aunque había ramas remotas que buscar.

Después de probar muchas cosas, quité el control remoto de origen y lo volví a crear. Parece que eso lo arregló. No sé por qué.

eliminar con: git remote rm origin

y recrear con: git remote add origin <git uri>

stux avatar Mar 09 '2018 03:03 stux

Actualización remota

necesitas correr

git remote update

o

git remote update <remote> 

Luego puede ejecutar git branch -rpara enumerar las sucursales remotas.

Pagar una nueva sucursal

Para rastrear una (nueva) sucursal remota como una sucursal local:

git checkout -b <local branch> <remote>/<remote branch>

o (a veces no funciona sin el extra remotes/):

git checkout -b <local branch> remotes/<remote>/<remote branch>

Hojas de trucos útiles de git

  • Algunas notas sobre git
  • Hoja de trucos de Git (pdf)
philipvr avatar Jul 24 '2012 04:07 philipvr

Tuve el mismo problema hoy al configurar mi repositorio desde cero. Intenté todo, nada funcionó excepto eliminar el origen y volver a agregarlo.

git remote rm origin
git remote add origin [email protected]:web3coach/the-blockchain-bar-newsletter-edition.git

git fetch --all
// Ta daaa all branches fetched
Lukas Lukac avatar May 28 '2020 17:05 Lukas Lukac