Guión:
- Hago una nueva rama
- piratearlo
- cometerlo
- empujalo
- hackearlo un poco más
- comprometerse de nuevo
- intenta empujar de nuevo
Git responde:
Las actualizaciones se rechazaron porque la punta de su rama actual está detrás de su contraparte remota. etc.
Soy el único que hackeando esta rama; nadie más la está tocando. La rama remota está realmente detrás de la rama local. No debería tener que tirar en absoluto.
(Y si lo hago, Git informa conflictos entre los dos y me obliga a fusionar la rama en sí misma)
¿Por qué (probablemente) está sucediendo esto? ¿Y cómo puedo diagnosticarlo / solucionarlo?
Para ser claros, no me estoy ramificando en ningún lado y nadie más está trabajando en eso:
Remote: Commit A -------- Commit B
Local: Commit A -------- Commit B -------- Commit C
C es una continuación directa de B, sin ramificaciones involucradas. Pero git piensa que C es una rama de A:
Remote: Commit A -------- Commit B
------- Commit C
/
Local: Commit A -------- Commit B
No es; es una continuación directa de B.
git remote -v
ygit show remote origin
(asumiendo que el origen es el control remoto con el que tiene problemas) puede ser útilRespuestas:
¿Probablemente reescribiste la historia? Su sucursal local divergió de la del servidor. Ejecute este comando para comprender mejor lo que sucedió:
Le recomiendo encarecidamente que intente comprender de dónde proviene este error. Para solucionarlo, simplemente ejecute:
La
-f
hace de este un “empuje forzado” y sobrescribe la rama en el servidor. Eso es muy peligroso cuando se trabaja en equipo. Pero como está solo y seguro de que su estado local es correcto, esto debería estar bien. Corre el riesgo de perder el historial de confirmaciones si ese no es el caso.fuente
HEAD
como el se@{u}
refieren a confirmaciones. Le dicen a gitk qué ramas mostrar.HEAD
se refiere a la rama actualmente extraída,@{u}
es la abreviatura deHEAD@{u}
, que representa la rama ascendente de la rama actualmente extraída. Entonces, por ejemplo.master
, eso es usualmenteorigin/master
.gitk
ayudó mucho!La solución es muy simple y funcionó para mí.
Prueba esto :
entonces
fuente
Esto me sucedió cuando intentaba impulsar la rama de desarrollo (estoy usando git flow). Alguien tenía actualizaciones automáticas para dominar. para arreglarlo hice:
Que trajo esos cambios. Entonces,
Que no hizo nada. Creo que la rama de desarrollo ya presionó a pesar del mensaje de error. Todo está actualizado ahora y sin errores.
fuente
Para diagnosticarlo, siga esta respuesta .
Pero para solucionarlo, sabiendo que usted es el único que lo está cambiando, haga:
1 - haga una copia de seguridad de su proyecto (solo hice los archivos en git, carpeta ./src)
2 -
git pull
3 - restaure su copia de seguridad sobre los muchos archivos "desordenados" ( con indicadores de fusión)
Lo intenté
git pull -s recursive -X ours
pero no funcionó de la manera que quería, aunque podría ser una opción, ¡¡¡pero copia de seguridad primero !!!Asegúrese de que las diferencias / cambios (en git gui) no sean ninguno. Este es mi caso, no hay nada que fusionar, pero github sigue diciendo que debería fusionarme ...
fuente