Lo que esto significa
Su corriente arriba, el control remoto al que llama, origin
ya no tiene, o tal vez nunca tuvo (es imposible distinguir solo con esta información) una rama llamadafeature/Sprint4/ABC-123-Branch
. Hay una razón particularmente común para eso: alguien (probablemente no tú, o lo recordarías) eliminó la rama en ese otro repositorio de Git.
Qué hacer
Esto depende de lo que quieras . Vea la sección de discusión a continuación. Usted puede:
- crear o volver a crear la rama en el control remoto, o
- eliminar su sucursal local, o
- cualquier otra cosa que se te ocurra.
Discusión
Debe estar ejecutándose git pull
(si estuviera ejecutando git merge
, obtendría un mensaje de error diferente o ningún mensaje de error).
Cuando ejecuta git fetch
, su Git contacta a otro Git, según la url
línea que se encuentra debajo de la [remote "origin"]
sección de su configuración. Ese Git ejecuta un comando ( upload-pack
) que, entre otras cosas, envía a su Git una lista de todas las ramas. Puedes usar git ls-remote
para ver cómo funciona esto (pruébalo, es educativo). Aquí hay un fragmento de lo que obtengo al ejecutar esto en un repositorio 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]
Las refs/heads/
entradas enumeran todas las ramas que existen en el control remoto, 1 junto con los ID de confirmación correspondientes (pararefs/tags/
entradas, las ID pueden apuntar a etiquetar objetos en lugar de confirmaciones).
Su Git toma cada uno de estos nombres de rama y lo cambia de acuerdo con la fetch
(s) línea (s) en esa misma remote
sección. En este caso, su Git reemplaza refs/heads/master
conrefs/remotes/origin/master
, por ejemplo. Su Git hace esto con cada nombre de sucursal que aparece.
También registra los nombres originales en el archivo especial FETCH_HEAD
(puede ver este archivo si mira en su propio .git
directorio). Este archivo guarda los nombres e ID obtenidos.
El git pull
comando se entiende como un atajo conveniente: se ejecuta git fetch
en el control remoto apropiado y luego git merge
(o, si se le indica git rebase
) , con los argumentos necesarios para fusionar (o rebase) como lo indica la [branch ...]
sección. En este caso, su [branch "feature/Sprint4/ABC-123-Branch"]
sección dice buscar origin
, luego fusionar con cualquier ID que se encuentre bajo el nombre refs/heads/feature/Sprint4/ABC-123-Branch
.
Como no se encontró nada con ese nombre, se git pull
queja y se detiene.
Si ejecutó esto como dos pasos separados, git fetch
y luego git merge
(o git rebase
), su Git miraría sus remotes/origin/
ramas de seguimiento remoto en caché para ver en qué fusionarse o rebase. Si no era como una rama de una sola vez, es posible que tenga la rama remota de seguimiento. En este caso, no recibirá un mensaje de error. Si nunca hubo una rama de este tipo, o si se ha ejecutado git fetch
con --prune
(lo que elimina las ramas muertas de seguimiento remoto), de modo que no tiene una rama de seguimiento remoto correspondiente, recibirá una queja, pero se referirá a ella en su origin/feature/Sprint4/ABC-123-Branch
lugar.
En cualquier caso , podemos concluir que feature/Sprint4/ABC-123-Branch
no existe ahora en el control remoto nombrado origin
.
Probablemente existió en algún momento, y probablemente creó su sucursal local desde 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 rama del control remoto y por qué, o simplemente puede presionar algo para volver a crearla o eliminar su rama de seguimiento remoto y / o su rama local.
1 Bueno, todo lo que va a admitir , al menos. Pero a menos que hayan ocultado específicamente algunas referencias, la lista incluye todo.