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
Respuestas:
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:
Discusión
Debe estar ejecutándose
git pull
(si estuviera ejecutandogit 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 laurl
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 usargit 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 paragit
sí mismo: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 mismaremote
sección. En este caso, su Git reemplazarefs/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 ejecutagit fetch
en el control remoto apropiado y luegogit merge
(o, si se le indicagit 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 buscarorigin
, luego fusionar con cualquier ID que se encuentre bajo el nombrerefs/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 luegogit merge
(ogit rebase
), su Git miraría susremotes/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 ejecutadogit 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 suorigin/feature/Sprint4/ABC-123-Branch
lugar.En cualquier caso , podemos concluir que
feature/Sprint4/ABC-123-Branch
no existe ahora en el control remoto nombradoorigin
.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.
fuente
git remote prune origin
git fetch --prune origin
, o el conjuntofetch.prune
detrue
en la configuración (los tres están destinados a hacer lo mismo, aunque en algunas versiones de Git algunos de estos no eran muy fiables).git checkout <your remote branch>
y todo sería bueno (en algunos casos).git branch --set-upstream-to=origin/master master
para cambiar la configuración aguas arriba de su localmaster
. Eliminar y recrear tiene eso como un efecto secundario (suponiendo que use el estilo DWIMgit checkout master
para crearlo), con un efecto secundario adicional de obligarlomaster
a que coincida con su estiloorigin/master
.Esto también puede suceder si usted / alguien cambió el nombre de la sucursal. Entonces, siga estos pasos (si sabe que el nombre de la sucursal cambia de nombre) Asumiendo el nombre de la sucursal anterior como
wrong-branch-name
y alguien lo renombró acorrect-branch-name
So.git pull
(verá esto "Su configuración especifica ..")git push --set-upstream origin correct-branch-name
git pull
(no recibirá el mensaje anterior)fuente
git push
y no funcionará si la rama actual está detrás de su control remoto.git pull origin correct-branch-name
es suficiente.Compruebe si su rama remota está disponible para extraer. Tuve el mismo problema, finalmente me di cuenta de que alguien eliminó la rama remota.
fuente
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ó.
fuente
Este error también se puede recibir cuando el nombre de la sucursal de origen tiene algún problema de caso.
Por ejemplo: la rama de origen es
team1-Team
y la rama local ha sido pagada comoteam1-team
. Entonces, estoT
adentro-Team
yt
adentro-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.fuente
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 hice:
fuente
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.fuente
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:
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 gran idea al crear software para Windows), sospecho que no puede desactivar la distinción entre mayúsculas y minúsculas.
fuente
Solo verifique si alguien eliminó la rama en el control remoto.
fuente
En mi caso, había eliminado la rama original de la que derivaba mi rama actual. Entonces, en el archivo .git / config tuve:
el simil2.0.5 fue eliminado. Lo reemplacé con el mismo nombre de rama:
Y funcionó
fuente
Puede vincular fácilmente su sucursal local con una remota ejecutando:
fuente
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).
Tiene sentido que no lo encuentre refs / heads / dev: para mí fue más fácil eliminar la carpeta local y clonar nuevamente.
fuente
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.
fuente
Puede editar el
~/.gitconfig
archivo en su carpeta de inicio. Aquí es donde se guardan todas las configuraciones globales.O bien, use
git config --global --unset-all remote.origin.url
y después de ejecutargit fetch
con la URL del repositorio.fuente
Estaba enfrentando el mismo problema donde mi sucursal actual era dev y estaba yendo a la sucursal de 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.
fuente
Acabo de recibir el mismo error, cuando no usé el caso correcto. Podría verificar 'integración'. Git me dijo que realizara una
git pull
actualización de mi sucursal. Lo hice, pero recibí el error mencionado. El nombre correcto de la sucursal es 'Integración' con una 'I' mayúscula. Cuando revisé esa rama y tiré, funcionó sin problemas.fuente
Si otro tirón simplemente funciona, significa que su internet no estaba conectado.
fuente