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,
originya 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 laurllí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-remotepara ver cómo funciona esto (pruébalo, es educativo). Aquí hay un fragmento de lo que obtengo al ejecutar esto en un repositorio Git paragitsí 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 mismaremotesección. En este caso, su Git reemplazarefs/heads/masterconrefs/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.gitdirectorio). Este archivo guarda los nombres e ID obtenidos.El
git pullcomando se entiende como un atajo conveniente: se ejecutagit fetchen 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 pullqueja y se detiene.Si ejecutó esto como dos pasos separados,
git fetchy 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 fetchcon--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-Branchlugar.En cualquier caso , podemos concluir que
feature/Sprint4/ABC-123-Branchno 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 origingit fetch --prune origin, o el conjuntofetch.prunedetrueen 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 masterpara 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 masterpara crearlo), con un efecto secundario adicional de obligarlomastera 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-namey alguien lo renombró acorrect-branch-nameSo.git pull(verá esto "Su configuración especifica ..")git push --set-upstream origin correct-branch-namegit pull(no recibirá el mensaje anterior)fuente
git pushy no funcionará si la rama actual está detrás de su control remoto.git pull origin correct-branch-namees 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-Teamy la rama local ha sido pagada comoteam1-team. Entonces, estoTadentro-Teamytadentro-teampuede 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 pullcomenzó 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
~/.gitconfigarchivo en su carpeta de inicio. Aquí es donde se guardan todas las configuraciones globales.O bien, use
git config --global --unset-all remote.origin.urly después de ejecutargit fetchcon 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 pullactualizació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