Pregunta ¿Cómo forzar un restablecimiento al repositorio remoto?


Nuestra rama maestra remota de alguna manera se ensució. El código de desarrollo actual está en la rama principal junto con los últimos commits. Obviamente, el código de desarrollo no está listo para la rama principal.

Entonces en mi repositorio local, hice un reinicio a la última etiqueta, git reset --hard (Tag). La rama maestra ahora está correcta en mi repositorio local. Ahora cuando intento presionar los cambios en el repositorio remoto, git push origin master, Recibo un error:

To (REMOTE GIT REPOSITORY LOCATION)
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'
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.

Entonces, después de mirar alrededor, descubrí --force opción. Así que hice un empujón de fuerza en el repositorio remoto, git push --force origin master, y todavía tengo un error:

Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To (REMOTE GIT REPOSITORY LOCATION)
 ! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to '(REMOTE GIT REPOSITORY LOCATION)'

No puedo extraer un master, porque contiene un código de desarrollo que no puede estar en master.


75
2018-05-11 01:09


origen


Respuestas:


El mensaje significa que no está permitido hacer un avance no rápido.

Su repositorio remoto es muy probable denyNonFastforwards = true en su configuración Si cambias eso, git push --force Deberia trabajar.

Para cambiar la configuración, necesita acceder a la máquina con el repositorio remoto. Desde allí, hazlo git config receive.denynonfastforwards false.


119
2018-05-11 01:29



El control remoto no permite avances rápidos.

Tu mejor opción es git revert todos los compromisos que no deberían estar allí y tener más cuidado en el futuro.

git revert [commit] creará un nuevo compromiso que deshace [commit] hizo.


14
2018-03-25 20:31



Pasos para habilitar permanentemente el empuje de fuerza en el siguiente estilo

git push -f myrepo my-branch

Edite el archivo llamado "config" en la carpeta que termina en ".git" en su repositorio remoto

En la salida de la línea de comandos de git del impulso fallido, busca la línea que diga algo así como:

error: failed to push some refs to 'ssh://user@some-remote-server.mycompany.com/srv/git/myrepo.git

entonces

ssh user@some-remote-server.mycompany.com
cd /srv/git/myrepo.git
vi config

Establezca "denyNonFastforwards" en falso

En "config", establece

[receive]
        denyNonFastforwards = false

Ahora puede presionar desde su máquina local con -f

git push -f myrepo my-branch

10
2018-05-11 01:12



Intenta usar el -f marcar y ponerlo después del nombre de la sucursal remota.

git push origin master -f


9
2017-10-25 13:14



No puedes hacer git push que no sea rápido.

  1. Si el control remoto es GitHub, ve a https://github.com/$USER/$REPO/settings/branches y desproteger la rama en cuestión.

    enter image description here

    Tienes que ser el administrador del repositorio para hacer eso.

  2. Si el control remoto es tu propio servidor git, ejecuta git config receive.denynonfastforwards false ahí.


2
2018-03-03 10:55



El problema ocurre porque la rama actual no está configurada correctamente para el HALAR. Primero compruebe si la rama ascendente está configurada correctamente para el uso de extracción - git remote show origin. Puedes encontrarlo en la sección - Secciones locales configuradas para 'git pull':. Si no, configúrelo usando:

git config branch.MYBRANCH.merge refs/heads/MYBRANCH

Proporcione el nombre de sucursal adecuado para el titular del lugar: MYBRANCH


0
2018-04-16 15:51



Estoy usando este grupo de comandos para restablecer mi repositorio remoto, esto reinicializará su repositorio local y volverá a vincularlo con su repositorio remoto y luego forzará las actualizaciones.

Creo que de esta manera no funcionará en su caso, pero puede ser útil para otra persona

ve a la carpeta fuente y luego ejecuta los comandos: tenga en cuenta que https://github.com/*.git es su enlace de repositorio remoto

git init
git remote add origin https://github.com/*.git
git add .
git commit -m "initial commit"
git push origin master -f
git push --set-upstream origin master

**Note: this will clear all your git history on your master branch**


0