buscar en git no obtiene todas las ramas
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 fetch
no 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-please
en todas las permutaciones posibles...
El problema se puede ver al verificar la remote.origin.fetch
configuració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.
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 origin
o git fetch
simplemente 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>
Actualización remota
necesitas correr
git remote update
o
git remote update <remote>
Luego puede ejecutar git branch -r
para 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)
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