He clonado un repositorio, después de lo cual alguien más ha creado 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 he encontrado sugieren que estoy haciendo lo correcto. Así que me someteré a la burla, porque obviamente debe haber algo 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 git fetch
que no puedo ver la rama remota dev-gml. Por qué no? Si clono el repositorio recientemente, está allí, así que 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 ...
git config --get remote.origin.fetch
produce? Si no es así+refs/heads/*:refs/remotes/origin/*
, probablemente debería serlo.+refs/heads/master:refs/remotes/origin/master
enmaster
lugar de*
Respuestas:
El problema se puede ver cuando se verifica la
remote.origin.fetch
configuración(las líneas que comienzan con
$
bash son indicaciones con los comandos que escribí. Las otras líneas son el resultado resultante)Como puede ver, en mi caso, el control remoto se configuró para obtener la rama maestra específicamente y solo. Lo arreglé como se muestra a continuación, incluido el segundo comando para verificar los resultados.
El comodín
*
por supuesto, significa todo bajo ese camino.Desafortunadamente, vi este comentario después de que ya había buscado y encontrado la respuesta por prueba y error.
fuente
--replace-all
parámetro para reemplazar todos los valores en la configuración de miremote.origin.fetch
git clone <url> --branch <branch> --single-branch [<folder>]
git clone ... --depth 1
Tuve este problema hoy en un repositorio.
No fue el
+refs/heads/*:refs/remotes/origin/*
problema según la solución superior.El síntoma fue simplemente eso
git fetch origin
ogit fetch
simplemente no parecía hacer nada, aunque había ramas remotas para buscar.Después de probar muchas cosas, eliminé el control remoto de origen y lo recreé. Parece que eso lo arregló. No se porque.
eliminar con:
git remote rm origin
y recrear con:
git remote add origin <git uri>
fuente
remote.origin.fetch
ie+refs/heads/*:refs/remotes/origin/*
. La solución anterior me ayudó.git remote update origin
trabajó para mi. ¿Supongo que algo necesitaba refrescarse?git remote update origin
no funcionó para mí, pero eliminar y agregar el control remoto sí.Actualización remota
Necesitas correr
o
Luego puede ejecutar
git branch -r
para enumerar las ramas remotas.Pagar una nueva sucursal
Para rastrear una (nueva) sucursal remota como una sucursal local:
o (a veces no funciona sin el extra
remotes/
):Útiles git cheatsheets
fuente
git fetch
seguido degit branch -a
no muestra todas las ramas. Tuve que eliminar mi directorio de trabajo y volver a clonar para ver la ramadev-gml
que hizo un colaborador. Esta vez funcionó, ¡pero nos vamos a ramificar a menudo!Edit:
muy bien podría haber funcionado. Es lo que intentaría si aún enfrentara el problema. HTHgit remote update origin
. Eso hizo que la rama faltante fuera visible a través degit branch -l -r
. (Lo mirégit config --get remote.origin.fetch
y la producción fue la+refs/heads/*:refs/remotes/origin/*
esperada)escríbelo desde la terminal
funciona bien.
fuente
Para hacerlo más específico Cree una rama de seguimiento, lo que significa que ahora está rastreando una rama remota.
Después de lo cual puedes
Luego trabajar en esa rama
Después de haber realizado cambios en la rama. Puede git fetch y git merge con su bifurcación de seguimiento remota para fusionar sus cambios y empujar a la bifurcación remota como se muestra a continuación.
Espero que ayude y te dé una idea de cómo funciona esto.
fuente
Tuve un problema similar, sin embargo, en mi caso, pude tirar / empujar a la rama remota pero
git status
no mostré el estado de la rama local wrt las remotas.Además, en mi caso
git config --get remote.origin.fetch
no devolvió nadaEl problema es que hubo un error tipográfico en el
.git/config
archivo en la línea de búsqueda del bloque remoto respectivo. Probablemente algo que agregué por error anteriormente (a veces miro directamente este archivo, o incluso lo edito)Por lo tanto, verifique si su entrada remota en el
.git/config
archivo es correcta, por ejemplo:fuente
Esto podría deberse a un momento de palma de la cara: si cambia entre varios clones, es fácil encontrarse en el árbol de origen 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 contribuyentes. Un nuevo clon de git obviamente parece resolver ese "problema" cuando el problema real es perder el enfoque o el contexto de trabajo o ambos.
fuente
Tuve que entrar en mis repositorios remotos GitExtensions ya que nada parecía funcionar. Allí vi que 2 sucursales no tenían un repositorio remoto configurado. después de ajustar se ve de la siguiente manera
Observe que la rama
noExternal3
todavía se muestra como que no tiene un repositorio remoto. No estoy seguro de qué combinación de comandos bash habría encontrado o ajustado eso.fuente
Tuve el mismo problema hoy al configurar mi repositorio desde cero. Intenté todo, nada funcionó excepto eliminar el origen y volver a agregarlo nuevamente.
fuente
Tuvimos el mismo problema y tienes que usar
Espero que esto ayude a alguien que enfrenta el mismo problema
fuente