example - git push
git fetch no busca todas las ramas (8)
El problema se puede ver al verificar la configuración remote.origin.fetch
(Las líneas que comienzan con $
son mensajes Bash con los comandos que escribí. Las otras líneas son el resultado)
$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master
Como puede ver, en mi caso, el control remoto se configuró para captar la rama maestra de manera específica y única. 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 debajo de ese camino.
Lamentablemente, vi este comentario después de que ya había buscado y encontré la respuesta por prueba y error.
He clonado un repositorio, después de lo cual alguien más ha creado una nueva rama, en la que me gustaría empezar a trabajar. Leí el manual, y parece completamente fácil. Extrañamente, no está funcionando, y todas las publicaciones que he encontrado sugieren que estoy haciendo lo correcto. Así que me someteré a la censura, porque debe haber algo obviamente mal con 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 después de la git fetch
no puedo ver la rama remota dev-gml. Por qué no? Si clono el repositorio recientemente, está allí, entonces ciertamente existe la rama remota:
$ 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 intentado git update
, git pull
, git fetch --all
, git pretty-please
en todas las permutaciones posibles ...
Esto podría deberse a un momento de palma de la cara: si cambia entre varios clones, es fácil encontrarse en el árbol fuente incorrecto tratando de extraer una rama inexistente. Es más fácil cuando los clones tienen nombres similares, o los repos son clones distintos para el mismo proyecto de cada uno de los múltiples colaboradores. Aparentemente, un nuevo clon de git parece resolver ese "problema" cuando el problema real es perder el foco o el contexto de trabajo, o ambos.
Para hacerlo más específico Cree una rama de seguimiento, lo que significa que ahora está rastreando una sucursal remota.
git branch --track branch remote-branch
git branch --track exp remotes/origin/experimental
Después de lo cual puedes
git branch # to see the remote tracking branch "exp" created .
Entonces para trabajar en esa rama hacer
git checkout branchname
git checkout exp
Después de haber realizado cambios en la rama. Puede capturar y combinar Git con su sucursal de seguimiento remoto para fusionar sus cambios y enviar a la sucursal remota como se muestra a continuación.
git fetch origin
git merge origin/experimental
git push origin/experimental
Espero que ayude y te dé una idea de cómo funciona esto.
Para rastrear una (nueva) rama remota como una rama local:
git checkout -b <local branch> <remote>/<remote branch>
o (a veces no funciona sin los remotes/
adicionales remotes/
):
git checkout -b <local branch> remotes/<remote>/<remote branch>
Editar: Necesita ejecutar git remote update
git remote update <remote>
o git remote update <remote>
. Luego puede ejecutar git branch -r
para listar las ramas remotas.
Trucos de git útiles
- Git Cheat Sheet ( Mi favorito personal )
- Algunas notas sobre git
- Hoja de trucos de Git (pdf)
Tuve este problema hoy en un repositorio.
No fue el problema +refs/heads/*:refs/remotes/origin/*
según la mejor solución.
El síntoma era simplemente que el git fetch origin
o la git fetch
simplemente no parecían hacer nada, aunque había ramas remotas para recuperar.
Después de probar muchas cosas, eliminé el control remoto de origen y lo recreé. Parece que eso lo arregló. No sé por qué.
eliminar con: git remote rm origin
y recrear con: git remote add origin <git uri>
Tuve que ir a mis repositorios remotos GitExtensions porque nada aquí parecía estar funcionando. Allí vi que 2 sucursales no tenían un repositorio remoto configurado. después de ajustarlo se ve de la siguiente manera
La rama de notificación noExternal3
aún muestra que no tiene un repositorio remoto. No estoy seguro de qué combo de comandos bash habría encontrado o ajustado eso.
Tuvimos el mismo problema y tienes que usar
git fetch
git push origin branch_name
git branch -r
Espero que esto ayude a alguien a enfrentar el mismo problema
escríbelo desde la terminal
git fetch --prune.
funciona bien.