Deseamos mostrarte la mejor solución que hemos encontrado por todo internet. Nosotros queremos que te resulte útil y si puedes aportar alguna mejora hazlo con libertad.
Solución:
Lo que esto significa
Su flujo ascendente: el control remoto al que llama origin
— ya no tiene, o tal vez nunca tuvo (es imposible decirlo solo con esta información) una sucursal llamada feature/Sprint4/ABC-123-Branch
. Hay una razón particularmente común para eso: alguien (probablemente no tú, o lo recordarás) eliminó la rama en ese otro repositorio de Git.
Qué hacer
Esto depende de lo que Ud. querer. Vea la sección de discusión a continuación. Puede:
- crear o volver a crear la sucursal en el control remoto, o
- elimine su sucursal local, o
- cualquier otra cosa que se te ocurra.
Discusión
debes estar corriendo git pull
(si estuvieras corriendo git merge
obtendría un mensaje de error diferente, o ningún mensaje de error).
cuando corres git fetch
su Git se comunica con otro Git, según el url
alinearse debajo de la [remote "origin"]
sección de su configuración. Ese Git ejecuta un comando (upload-pack
) que, entre otras cosas, envía su Git una lista de todas las sucursales. Puedes usar git ls-remote
para ver cómo funciona esto (pruébalo, es educativo). Aquí hay un fragmento de lo que obtengo cuando ejecuto esto en un repositorio de Git para git
sí mismo:
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
Él refs/heads/
las entradas enumeran todas las sucursales que existen en el control remoto,1 junto con los ID de confirmación correspondientes (por refs/tags/
entradas, los ID pueden apuntar a objetos de etiquetas en lugar de confirmaciones).
Tu Git toma cada uno de estos nombres de rama y cambios según el fetch
línea(s) en ese mismo remote
sección. En este caso, su Git reemplaza refs/heads/master
con refs/remotes/origin/master
, por ejemplo. Tu Git hace esto con cada nombre de rama que aparece.
También registra los nombres originales en el archivo especial FETCH_HEAD
(puedes ver este archivo si echas un vistazo a tu propio .git
directorio). Este archivo guarda los nombres e ID obtenidos.
Él git pull
El comando está pensado como un atajo conveniente: se ejecuta git fetch
en el control remoto apropiado, y luego git merge
(o, si así se le indica, git rebase
) con los argumentos necesarios para fusionar (o reorganizar) según lo indique el [branch ...]
sección. En este caso, su [branch "feature/Sprint4/ABC-123-Branch"]
la sección dice buscar de origin
luego combínelo con cualquier ID que se encuentre bajo el nombre refs/heads/feature/Sprint4/ABC-123-Branch
.
Como no se encontró nada con ese nombre, git pull
se queja y se detiene.
Si ejecutó esto como dos pasos separados, git fetch
y luego git merge
(o git rebase
), su Git miraría su caché remotes/origin/
sucursales de seguimiento remoto para ver con qué fusionarse o reorganizarse. Sí hay era tal rama a la vez, aún puede tener la rama de seguimiento remoto. En este caso, no obtendría un mensaje de error. Si nunca hubo tal sucursal, o si ha corrido git fetch
con --prune
(que elimina las ramas muertas de seguimiento remoto), de modo que no tenga una rama de seguimiento remoto correspondiente, recibirá una queja, pero se referirá a origin/feature/Sprint4/ABC-123-Branch
en cambio.
En cualquier casopodemos concluir que feature/Sprint4/ABC-123-Branch
no existe ahora en el control remoto llamado origin
.
Probablemente existió alguna vez, y probablemente creó su sucursal local a partir de la sucursal de seguimiento remoto. Si es así, probablemente todavía tenga la rama de seguimiento remoto. Puede investigar para ver quién eliminó la sucursal del control remoto y por qué, o simplemente presionar algo para volver a crearla, o eliminar su sucursal de seguimiento remoto y/o su sucursal local.
1Bueno, todo eso va a admitir a por lo menos. Pero a menos que hayan ocultado específicamente algunas referencias, la lista incluye todo.
Editar, julio de 2020: Hay un nuevo protocolo de búsqueda que puede evitar la lista todo, y solo enumere los nombres que su Git dice que está buscando. Esto puede ayudar con los repositorios que tienen una gran cantidad de ramas y/o etiquetas. Sin embargo, si su Git está interesado en todos los nombres posibles, obtendrá todos los nombres aquí.
Esto también puede suceder si usted/alguien cambió el nombre de la rama. Así que siga estos pasos (si sabe que el nombre de la sucursal ha cambiado de nombre) Asumiendo que el nombre de la sucursal anterior es wrong-branch-name
y alguien lo renombró a correct-branch-name
Asi que.
git checkout correct-branch-name
git pull
(verás esto “Tu configuración especifica…”)
git branch --unset-upstream
git push --set-upstream origin correct-branch-name
git pull
(no recibirás el mensaje anterior)
Compruebe si su sucursal remota está disponible para extraer. Tuve el mismo problema, finalmente me di cuenta de que alguien eliminó la rama remota.
Calificaciones y reseñas
Agradecemos que desees añadir valor a nuestra información contribuyendo tu experiencia en las críticas.