git - remotas - Su configuración especifica fusionarse con el<nombre de la sucursal> desde el control remoto, pero no se obtuvo dicha referencia.
listar ramas git (15)
Recibo este error para pull:
Su configuración especifica fusionarse con la referencia ''refs / heads / feature / Sprint4 / ABC-123-Branch'' desde el control remoto, pero no se obtuvo dicha referencia.
Este error no viene para ninguna otra rama.
Lo especial de esta rama es que se crea a partir de la confirmación previa de otra rama.
Mi archivo de configuración se ve así:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
[remote "origin"]
url = <url here>
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "new-develop"]
remote = origin
merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
remote = origin
merge = refs/heads/feature/Sprint4/ABC-123-Branch
Lo que esto significa
Su
feature/Sprint4/ABC-123-Branch
ascendente, el control remoto al que llama
origin
ya no tiene, o tal vez nunca tuvo (es imposible saber solo con esta información) una rama llamada
feature/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 ejecutando
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 se pone en contacto con otro Git, en función de la línea de
url
en la sección
[remote "origin"]
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.
Puede usar
git ls-remote
para ver cómo funciona esto (pruébelo, es educativo).
Aquí hay un fragmento de lo que obtengo al ejecutar esto en un repositorio de Git para
git
sí:
$ 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 las ID de confirmación correspondientes (para
refs/tags/
entradas, las ID pueden apuntar a objetos de etiqueta en lugar de confirmaciones).
Su Git toma cada uno de estos nombres de rama y lo
cambia de
acuerdo con las líneas de
fetch
en esa misma sección
remote
.
En este caso, su Git reemplaza
refs/heads/master
con
refs/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 directorio
.git
).
Este archivo guarda los nombres e ID obtenidos.
El comando
git pull
se entiende como un atajo conveniente: 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) según lo indique el
[branch ...]
sección.
En este caso, la
[branch "feature/Sprint4/ABC-123-Branch"]
dice buscar desde el
origin
, luego fusionarse 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
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 ramas remotas
remotes/origin/
seguimiento remoto en caché para ver en qué fusionarse o rebase.
Si hubo una bifurcación de este tipo, es posible que aún tenga la bifurcación de seguimiento remoto.
En este caso, no recibirá un mensaje de error.
Si nunca hubo una rama de este tipo, o si ha ejecutado
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
lugar.
En cualquier caso
, podemos concluir que la
feature/Sprint4/ABC-123-Branch
no existe ahora en el
origin
nombre remoto.
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.
Acabo de recibir exactamente este error al hacer "git pull" cuando mi disco estaba lleno. Creé algo de espacio y todo comenzó a funcionar bien nuevamente.
Compruebe si su rama remota está disponible para extraer. Tuve el mismo problema, finalmente me di cuenta de que alguien eliminó la rama remota.
En mi caso, había eliminado la rama original de la que derivaba mi rama actual. Entonces, en el archivo .git / config tuve:
[branch "simil2.1.12"]
remote = origin
merge = refs/heads/simil2.0.5
rebase = false
el simil2.0.5 fue eliminado. Lo reemplacé con el mismo nombre de rama:
[branch "simil2.1.12"]
remote = origin
merge = refs/heads/simil2.1.12
rebase = false
Y funcionó
En mi caso, simplemente carecía de confirmación inicial en la rama remota, por lo que la rama local no encontraba nada que extraer y estaba dando ese mensaje de error.
Yo si:
git commit -m ''first commit'' // on remote branch
git pull // on local branch
Estaba enfrentando el mismo problema donde mi sucursal actual era dev y estaba yendo a la sucursal MR y haciendo git pull a partir de entonces. Una solución fácil que tomé fue que creé una nueva carpeta para MR Branch e hice git pull allí seguido de git clone.
Básicamente, mantuve diferentes carpetas para insertar código en diferentes ramas.
Este error también se puede recibir cuando el nombre de la sucursal de origen tiene algún problema de caso.
Por ejemplo: la sucursal de origen es
team1-Team
y la sucursal local se ha
team1-team
como
team1-team
.
Entonces, esta
T
en
-Team
y
t
en
-team
puede causar tal error.
Esto sucedió en mi caso.
Entonces, al cambiar el nombre local con el nombre de la rama de origen, se resolvió el error.
Esto también puede suceder si usted / alguien cambió el nombre de la sucursal.
Por lo tanto, siga estos pasos (si sabe que el nombre de la sucursal cambia de nombre) Asumiendo el nombre de la sucursal anterior como nombre de rama
wrong-branch-name
y alguien lo renombró a
correct-branch-name
.
git checkout correct-branch-name
git pull
(verá esto "Su configuración especifica ..")
git branch --unset-upstream
git push --set-upstream origin correct-branch-name
git pull
(no recibirá el mensaje anterior)
Para mí fue un problema de mayúsculas y minúsculas. Mi sucursal local era Version_feature2 en lugar de Version_Feature2. Volví a revisar mi rama con la carcasa correcta y luego git pull funcionó.
Para mí, esto sucedió porque fusioné un desarrollador de rama en maestro usando la interfaz web y luego intenté sincronizar / extraer usando VSCode que estaba abierto en la rama de desarrollo (es extraño que no pueda cambiar a maestro sin obtener este error).
git pull
Your configuration specifies to merge with the ref ''refs/heads/dev''
from the remote, but no such ref was fetched.''
Tiene sentido que no lo encuentre refs / heads / dev: para mí fue más fácil eliminar la carpeta local y clonar nuevamente.
Puede editar el archivo
~/.gitconfig
en su carpeta de inicio.
Aquí es donde se guardan todas las configuraciones globales.
O use
git config --global --unset-all remote.origin.url
y luego ejecute
git fetch
con la url del repositorio.
Recibí un error similar cuando la causa real era que mi disco estaba lleno.
Después de eliminar algunos archivos,
git pull
comenzó a funcionar como esperaba.
Seguí encontrándome con este problema. En mi caso, el comentario de @ Jerreck sobre las diferencias de casos en los nombres de las ramas fue la causa de este error. Algunas herramientas de Windows no son conscientes de mayúsculas y minúsculas.
Para desactivar mayúsculas y minúsculas en git, ejecute este comando:
git config --global core.ignorecase true
Tenga en cuenta que esto afectará más que los nombres de las sucursales. Por ejemplo, si tiene "Foo.h" y "foo.h" en el mismo directorio (no es una buena idea al crear software para Windows), sospecho que no puede desactivar la distinción entre mayúsculas y minúsculas.
Si otro tirón simplemente funciona, significa que su internet no estaba conectado.
Solo verifique si alguien eliminó la rama en el control remoto.