Mensaje completo:
error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> origin/user (unable to update local ref)
git push --force
. Intenta corrergit pull --force
.Respuestas:
Si está ejecutando git en un sistema de archivos que no distingue entre mayúsculas y minúsculas (Windows u OS X), esto ocurrirá si hay dos ramas con el mismo nombre pero con mayúsculas diferentes, por ejemplo
user_model_changes
y yUser_model_changes
ambas ramas remotas coincidirán con la misma referencia de seguimiento .Elimine la rama remota incorrecta (no debería tener ramas que difieran solo por caso) y luego
git remote prune origin
todo debería funcionarfuente
.git\refs\remotes\origin
carpeta y luegogit pull
nuevamente.Arreglo permanente
git update-ref -d
resolvió mi instancia de este error, por ejemploTenga en cuenta que esto no afecta el control remoto.
En mi caso, una
git fetch
búsqueda posterior de esa rama de nuevo, y después de las descargas / extracciones de git ya no dio el error "la referencia remota está en pero se esperaba".Si eso no funciona, una solución temporal:
Tenga en cuenta también que si no le importa la rama en cuestión (por ejemplo, solo desea actualizar el maestro, no el origen / usuario), una
git pull
solución es buscar y luego fusionar la rama particular que le interesa, por ejemplofuente
Simplemente elimine las carpetas y archivos debajo
\.git\refs\remotes\origin
. Funciona, cuando no tienes cambios no apresurados.fuente
Ejecuté esto para resolver el problema:
fuente
Use los dos comandos a continuación uno por uno.
Esto resolverá tu problema.
fuente
Tuve que eliminar mi rama de mi línea de comando en:
y luego haciendo manualmente:
Pude hacer los cambios.
Nota: Estaba usando SourceTree y no pude hacer la extracción.
fuente
.git\packed-refs
antes de que me la arreglaran.Un restablecimiento completo también resolverá el problema
fuente
Pasos más claros
en terminal
Qué
ls
, verá algunas ramas y CABEZAElimina la rama que crees que tiene el problema
Si no funcionó, elimine todas las ramas / HEAD
Espero que funcione ahora.
fuente
git update-ref -d <branchname>
?Prueba esto, funcionó para mí. En su terminal:
git remote prune origin
.fuente
Desafortunadamente, los comandos GIT como podar y restablecer o presionar no funcionaron para mí. Prune funcionó una vez y luego el problema volvió.
La solución permanente que funcionó para mí es editar un archivo git manualmente. Simplemente vaya a la carpeta .git del proyecto y luego abra el archivo empacado-referencias en un editor de texto como Notepad ++. Luego navegue a la fila con la rama que falla y actualice su guid a la esperada.
Si tienes un mensaje como:
"error: no se puede bloquear la referencia 'refs / remotes / origin / feature / branch_xxx': está en 425ea23facf96f51f412441f41ad488fc098cf23 pero se esperaba 383de86fed394ff1a1aeefc4a522d886adcecd79"
luego en el archivo encuentre la fila con 'refs / remotes / origin / feature / branch_xxx'. La guía allí será la esperada (2da): 383de86fed394ff1a1aeefc4a522d886adcecd79. Debe cambiarlo al real (1º): 425ea23facf96f51f412441f41ad488fc098cf23.
Repita para las otras ramas que fallan y estará listo para continuar. A veces, después de volver a buscar, tenía que repetir para las mismas ramas que ya había "arreglado" anteriormente. Al volver a buscar, GIT actualiza las guías y le ofrece la última.
De todos modos, el problema no es un obstáculo para el espectáculo. La lista de sucursales se actualiza. Esto es más bien una advertencia.
fuente
git for-each-ref --format = 'eliminar% (refname)' refs / original | git update-ref --stdin git reflog caduca --expire = ahora --todos git gc --prune = ahora
fuente
El mismo caso aquí, pero nada sobre los comentarios publicados está bien en mi caso, solo tengo una rama (maestra) y solo uso el sistema de archivos Unix, este error ocurre al azar cuando ejecuto git fetch --progress --prune origin y branch está adelante o 'origen / maestro'. Nadie puede comprometerse, solo 1 usuario puede hacer push.
NOTA: Tengo un submódulo en el repositorio de acme y acme tiene nuevos cambios de submódulo (nuevas confirmaciones), primero necesito hacer una actualización de submódulo con git submodule update.
Para resolver este problema (en mi caso) simplemente ejecute primero git push si su rama está por delante del origen.
fuente
Sé que esto es viejo, pero tengo mi propia solución. Como estoy usando el árbol de origen, este error ocurre porque alguien crea una nueva rama. El árbol fuente está confundido sobre esto. Después de presionar el botón "Actualizar" al lado del cuadro combinado "rama remota para extraer", parece que sourcetree ha actualizado la lista de ramas, y ahora puedo extraer con éxito.
fuente
Tuve el mismo problema que se causó porque restablecí una confirmación anterior a pesar de que ya presioné la rama remota.
Lo resolví eliminando mi rama local y luego revisando la rama de origen
git checkout origin/my_branch
y luego ejecutandogit checkout my_branch
fuente
Después de buscar constantemente, esta es la solución que funcionó para mí, lo que implica desarmar / eliminar el Upstream
fuente