stackoverflow - Git push rechazó "no rápido avance"
git rebase tutorial (8)
Bloqueo de escritura en el repositorio local compartido
Tuve este problema y ninguno de los consejos anteriores me ayudó. Pude recuperar todo correctamente Pero el empuje siempre falló. Era un repositorio local ubicado en el directorio de Windows con varios clientes que trabajan con él a través del controlador de carpeta compartida VMWare. Parecía que uno de los sistemas bloqueaba el repositorio de Git para escribir. Después de detener el sistema VMWare relevante, lo que causó el bloqueo todo reparado de inmediato. Era casi imposible saber qué sistema causaba el error, así que tuve que detenerlos uno por uno hasta que tuvieron éxito.
Soy bastante nuevo en git
pero lo estoy usando para administrar nuestro código en un entorno de equipo. Tuve algunos problemas de rebase y los solucioné usando
git checkout --ours filename.txt
git add filename.txt
git rebase --continue
Ahora deseo impulsar mis cambios y ejecutar el siguiente comando
$ git push origin feature/my_feature_branch
me da el siguiente error:
To ssh://[email protected]:7999/repo/myproject.git
! [rejected] feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to ''ssh://[email protected]:7999/repo/myproject.git''
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. ''git pull'')
hint: before pushing again.
hint: See the ''Note about fast-forwards'' in ''git push --help'' for details.
¿Qué puedo hacer para deshacerme del error?
PD: estoy evitando usar la opción --force
tanto como sea posible.
¡Tuve este problema! Intenté: git fetch + git merge, ¡pero no lo resolví! Intenté: git pull, y tampoco lo resolví
Luego probé esto y resolví mi problema (es similar a la respuesta de Engineer):
git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp
Bueno, usé el consejo aquí y me fastidió ya que fusionó mi código local directamente con el maestro. ... así que tómalo todo con un grano de sal. Mi compañero de trabajo dijo que lo siguiente ayudó a resolver el problema, necesitaba volver a marcar mi sucursal.
git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch
En Eclipse, haga lo siguiente:
Repositorios GIT> Controles remotos> Origen> Haga clic derecho y diga buscar
Repositorios GIT> Seguimiento remoto> Seleccione su rama y diga fusión
Vaya a proyecto, haga clic derecho en su archivo y diga Fetch desde el inicio.
Parece que alguien presionó nuevos commits entre tu último git fetch
y git push
. En este caso, debe repetir sus pasos y volver a my_feature_branch
base de my_feature_branch
una vez más.
git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch
Después de la git fetch
recomiendo examinar la situación con gitk --all
.
Probablemente no buscó los cambios remotos antes de la rebase o alguien presionó nuevos cambios (mientras estaba reorganizando e intentando presionar). Pruebe estos pasos:
#fetching remote ''feature/my_feature_branch'' branch to the ''tmp'' local branch
git fetch origin feature/my_feature_branch:tmp
#rebasing on local ''tmp'' branch
git rebase tmp
#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch
#removing temporary created ''tmp'' branch
git branch -D tmp
Tuve un problema similar y lo resolví con: git pull origen
Llego tarde a la fiesta pero encontré algunas instrucciones útiles en la página de ayuda de github y quería compartirlas aquí.
A veces, Git no puede realizar cambios en un repositorio remoto sin perder compromisos. Cuando esto sucede, su impulso es rechazado.
Si otra persona se ha desplazado a la misma sucursal que usted, Git no podrá impulsar sus cambios:
$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to ''https://github.com/USERNAME/REPOSITORY.git''
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. ''git pull'') before pushing again. See the
''Note about fast-forwards'' section of ''git push --help'' for details.
Puede solucionar esto obteniendo y fusionando los cambios realizados en la sucursal remota con los cambios que ha realizado localmente:
$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work
O bien, simplemente puede usar git pull
para ejecutar ambos comandos a la vez:
$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work