Pregunta Egit rechazó el avance rápido


Recibo este mensaje mientras presiono al repositorio de Github. ¿Me puede decir el procedimiento paso a paso para solucionarlo? Empujé solo una vez y fue exitoso. Pero, cuando actualicé un proyecto y traté de impulsar mi segundo compromiso, se muestra "maestro rechazado no rápido" y no me permite presionar. Por favor explica el procedimiento.


73
2017-10-20 05:17


origen


Respuestas:


Tuve el mismo problema y pude solucionarlo. afk5min tenía razón, el problema es que la rama desde la que extrajo el código ha cambiado en el repositorio remoto. Según las prácticas estándar de git (http://git-scm.com/book/es/Git-Basics-Working-with-Remotes), necesita (ahora) combinar esos cambios en el repositorio remoto en sus cambios locales antes de poder comprometerse. Esto tiene sentido, esto te obliga a tomar los cambios de otros y fusionarlos en tu código, asegurando que tu código continúe funcionando con los otros cambios en su lugar.

De todos modos, a los pasos.

  1. Configura la 'búsqueda' para recuperar la rama desde la que originalmente extrajiste.

  2. Obtener la rama remota.

  3. Combina esa rama remota en tu sucursal local.

  4. Confirme el cambio (fusión) en su repositorio local.

  5. Empuja el cambio al repositorio remoto.

En detalle...

  1. En eclipse, abra la vista 'Git Repositories'.

  2. Asegúrese de ver su repositorio local y pueda ver el repositorio remoto como una subcarpeta. En mi versión, se llama Remotes, y luego puedo ver el proyecto remoto dentro de eso.

  3. Busque la flecha verde que apunta hacia la izquierda, esta es la flecha 'buscar'. Haga clic derecho y seleccione 'Configurar búsqueda'.

  4. Debería ver el URI, asegúrese de que apunta al repositorio remoto.

  5. Mire en la sección de asignaciones de referencias de la ventana emergente. El mío estaba vacío. Esto indicará qué referencias remotas desea buscar. Haga clic en 'Agregar'.

  6. Escriba el nombre de la rama que necesita recuperar del repositorio remoto. El mío fue 'maestro' (por cierto, un menú desplegable aquí sería genial !!, por ahora, tienes que escribirlo). Continúe por la ventana emergente y, finalmente, haga clic en 'Finalizar'.

  7. Haga clic en "Guardar y recuperar". Esto obtendrá esa referencia remota.

  8. Mire en la carpeta 'Sucursales' de su repositorio local. Ahora debería ver esa rama remota en la carpeta remota. De nuevo, veo 'maestro'.

  9. Haga clic derecho en la sucursal local en la carpeta 'Local' de 'Sucursales', que se llama 'maestro'. Seleccione 'Combinar', y luego seleccione la rama remota, que se llama 'origen / maestro'.

  10. Proceso a través de la fusión.

  11. Confirme cualquier cambio en su repositorio local.

  12. Empuja tus cambios al repositorio remoto.

  13. Ve a tomar una bebida sabrosa, felicitándote a ti mismo. Tómese el resto del día libre.


193
2017-11-15 20:43



Mientras tanto (mientras actualizabas tu proyecto), se han realizado otros commits en la rama 'master'. Por lo tanto, debe realizar esos cambios primero para poder impulsar sus cambios.


8
2017-10-20 05:40



En mi caso, elegí el Force Update casilla de verificación mientras empuja. Funcionó a las mil maravillas.


8
2017-07-26 09:50



Aplicable para Eclipse Luna + Eclipse Git 3.6.1

YO,

  1. repositorio git clonado
  2. hecho algunos cambios en el código fuente
  3. cambios en etapas desde la Vista de Git Staging
  4. finalmente, cometer y empujar!

Y me enfrenté a este problema con EGit y así es como lo arreglé ...

Sí, alguien cometió los cambios antes de que yo realice mis cambios. Entonces los cambios son rechazados. Después de este error, los cambios se comprometen realmente con el repositorio local. No quería solo Pull los cambios porque quería mantener linear history como se señala en - ¿En qué casos podría `git pull` ser dañino?

Entonces, ejecuté los siguientes pasos

  1. desde la perspectiva del Repositorio Git, haga clic derecho en el Git correspondiente
    proyecto
  2. seleccionar Fetch from Upstream - obtiene actualizaciones remotas (refs y objetos) pero no se realizan actualizaciones localmente. para más información, refiérase ¿Cuál es la diferencia entre 'git pull' y 'git fetch'?
  3. seleccionar Rebase... - abre una ventana emergente, haz clic en Preserve merges during rebase ver por qué
    ¿Qué hace exactamente "rebase - preserve-merges" de git (y por qué?)
  4. haga clic en Rebase button
  5. si hay / hay un conflict(s), vaya al paso 6 más el paso 11
  6. un Rebase Result emergente aparecerá, simplemente haga clic en OK
  7. file comparator se abriría, necesitas modificar left side file.
  8. una vez que haya terminado con la fusión de cambios correctamente, goto Git Staging ver
  9. stage the changes. es decir add to index
  10. en la misma vista, haga clic en Rebase-> Continue. repita 7 a 10 hasta que se resuelvan todos los conflictos.
  11. de History ver, seleccione su fila de confirmación y seleccione Push Commit
  12. seleccionar Rebase Commits of local....... casilla de verificación y haga clic en siguiente. referir por qué - Git: rebase a la rama de desarrollo de la corriente ascendente
  13. haga clic en Finish

Nota: si tiene varias confirmaciones de repositorio local, necesita aplastarlas en una confirmación para evitar fusiones múltiples.


6
2018-01-15 18:31



Abrir la vista de git:

1- selecciona tu proyecto y elige fusionar 2- Seleccione el seguimiento remoto 3- clic ok

Git fusionará la rama remota con el repositorio local

4- Luego empuja


3
2017-12-20 20:06



Descubrí que debes estar en el último commit del git. Entonces estos son los pasos a seguir: 1) asegúrese de que no ha estado trabajando en los mismos archivos, de lo contrario, se encontrará con un error DITY_WORK_TREE. 2) extraer los últimos cambios. 3) compromete tus actualizaciones.

Espero que esto ayude.


0
2017-07-24 21:00



  1. Entra en Github y crea un repositorio para tu nuevo código.
  2. Use la nueva URL https o ssh en Eclise cuando esté realizando el push to upstream;

0
2018-03-23 09:15



Este error significa que el repositorio remoto ha tenido otras confirmaciones y se ha adelantado a su sucursal local.
Intento hacer un git pull seguido de un git push. Si no hay cambios conflictivos, git pull obtiene el último código en mi sucursal local mientras mantiene mis cambios intactos.
Luego un git push empuja mis cambios a la rama principal.


0
2018-04-05 07:47