Recibo este mensaje mientras empujo al repositorio de github. ¿Puede decirme el procedimiento paso a paso para solucionarlo? Empujé solo una vez y fue exitoso. Pero, cuando actualicé un proyecto e intenté presionar mi segundo compromiso, muestra "maestro rechazado sin avance rápido" y no me permite presionar. Explique el procedimiento.
89
Respuestas:
Tuve este mismo problema y pude solucionarlo. afk5min tenía razón, el problema es que la rama de la que extrajo el código ha cambiado desde entonces en el repositorio remoto. Según las prácticas estándar de git ( http://git-scm.com/book/en/Git-Basics-Working-with-Remotes ), necesita (ahora) fusionar esos cambios en el repositorio remoto en sus cambios locales antes de puede comprometerse. Esto tiene sentido, esto te obliga a tomar los cambios de otros y combinarlos en tu código, asegurando que tu código continúe funcionando con los otros cambios en su lugar.
De todos modos, a los escalones.
Configure la 'recuperación' para obtener la rama de la que extrajo originalmente.
Busca la rama remota.
Fusiona esa rama remota en tu rama local.
Confirme el cambio (fusión) en su repositorio local.
Empuje el cambio al repositorio remoto.
En detalle...
En eclipse, abra la vista 'Git Repositories'.
Asegúrese de ver su repositorio local y puede ver el repositorio remoto como una subcarpeta. En mi versión, se llama Remotes, y luego puedo ver el proyecto remoto dentro de eso.
Busque la flecha verde que apunta a la izquierda, esta es la flecha 'buscar'. Haga clic derecho y seleccione 'Configurar Fetch'.
Debería ver el URI, asegúrese de que apunte al repositorio remoto.
Busque en la sección de asignaciones de referencias de la ventana emergente. El mío estaba vacío. Esto indicará qué referencias remotas desea obtener. Haga clic en 'Agregar'.
Escriba el nombre de la rama que necesita obtener del repositorio remoto. El mío era 'maestro' (por cierto, ¡¡un menú desplegable aquí sería genial !!, por ahora, tienes que escribirlo). Continúe con la ventana emergente y finalmente haga clic en 'Finalizar'.
Haga clic en 'Guardar y recuperar'. Esto buscará esa referencia remota.
Busque en la carpeta 'Ramas' de su repositorio local. Ahora debería ver esa rama remota en la carpeta remota. Una vez más, veo 'maestro'.
Haga clic derecho en la rama local en la carpeta 'Local' de 'Ramas', que se llama 'maestra'. Seleccione 'Fusionar' y luego seleccione la rama remota, que se llama 'origen / maestro'.
Proceso a través de la fusión.
Confirme cualquier cambio en su repositorio local.
Envíe sus cambios al repositorio remoto.
Ve a tomar una bebida sabrosa, felicitándote. Tómate el resto del día libre.
fuente
Merge
en maestro y luego haga clic derecho nuevamente en el proyectopush branch Master
trabajadoEn mi caso, elegí la
Force Update
casilla de verificación mientras empujaba. Funcionó a las mil maravillas.fuente
Mientras tanto (mientras estaba actualizando su proyecto), se han realizado otras confirmaciones en la rama 'maestra'. Por lo tanto, primero debe realizar esos cambios para poder implementarlos.
fuente
Aplicable para Eclipse Luna + Eclipse Git 3.6.1
YO,
Y me enfrenté a este problema con EGit y así es como lo solucioné ...
Sí, alguien confirmó los cambios antes de que yo confirmara mis cambios. Entonces se rechazan los cambios. Después de este error, los cambios se confirman realmente en el repositorio local. No quería solo
Pull
los cambios porque quería mantenerlinear history
como se señala en - ¿En qué casos podría ser dañino `git pull`?Entonces, ejecuté los siguientes pasos
proyecto de Git en cuestión
Fetch from Upstream
: obtiene actualizaciones remotas (referencias y objetos) pero no se realizan actualizaciones localmente. para obtener más información, consulte ¿Cuál es la diferencia entre 'git pull' y 'git fetch'?Rebase...
- esto abre una ventana emergente, haga clic enPreserve merges during rebase
ver por qué ¿Qué hace exactamente "rebase --preserve-merges" de git (y por qué?)
Rebase button
conflict(s)
, vaya al paso 6, de lo contrario al paso 11Rebase Result
aparecerá una ventana emergente, simplemente haga clic enOK
file comparator
se abriría, necesita modificarleft side file
.Git Staging
vistastage the changes
. es deciradd to index
Rebase
->Continue
. repita de 7 a 10 hasta que se resuelvan todos los conflictos.History
vista, seleccione su fila de compromiso y seleccionePush Commit
Rebase Commits of local.......
casilla de verificación y haga clic en siguiente. referir por qué - Git: rebase en la rama de desarrollo desde arribaFinish
Nota: si tiene varias confirmaciones del repositorio local, debe aplastarlas en una confirmación para evitar múltiples fusiones.
fuente
Configurar Después de presionar el código cuando recibe un mensaje rechazado, haga clic en configurar y haga clic en Agregar especificación como se muestra en esta imagen
Desplácese hacia abajo y haga clic en ref / heads / yourbranchname y haga clic en Add Spec nuevamente
Asegúrate de seleccionar la actualización forzada
Finalmente, guarde y envíe el código al repositorio.
fuente
Abrir vista de git:
1- seleccione su proyecto y elija fusionar 2- Seleccione seguimiento remoto 3- haga clic en Aceptar
Git fusionará la rama remota con el repositorio local
4- luego empuja
fuente
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 código más reciente en mi sucursal local y mantiene intactos mis cambios.
Luego, un git push empuja mis cambios a la rama maestra.
fuente
Descubrí que debes estar en la última confirmación del git. Así que 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) extraiga los últimos cambios. 3) confirma tus actualizaciones.
Espero que esto ayude.
fuente
fuente