git - tag - ¿Cómo forzar un restablecimiento al repositorio remoto?
how to tag in git (7)
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, git reset --hard (Tag)
la última etiqueta, git reset --hard (Tag)
. La rama maestra ahora está correcta en mi repositorio local. Ahora cuando intento enviar los cambios al repositorio remoto, git push origin master
, obtengo 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í la opción --force
. Así que hice un empujón de fuerza en el repositorio remoto, git push --force origin master
, y todavía recibí 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.
El control remoto no permite avances rápidos.
Tu mejor opción es git revert
todos los commits que no deberían estar allí y tener más cuidado en el futuro.
git revert [commit]
creará un nuevo commit que deshace lo que [commit]
hizo.
El mensaje significa que no está permitido hacer un avance no rápido.
Es muy probable que tu repositorio remoto denyNonFastforwards = true
en su configuración. Si cambias eso, git push --force
debería funcionar.
Para cambiar la configuración, necesita acceder a la máquina con el repositorio remoto. A partir de ahí, haz que git config receive.denynonfastforwards false
.
El problema ocurre porque la rama actual no está configurada correctamente para el PULL . Primero compruebe si la rama ascendente está configurada correctamente para el origen de extracción de git remote show origin
extracción de git remote show origin
. Puede encontrarlo en la sección - Ramas locales configuradas para ''git pull'':. Si no, configúrelo usando:
git config branch.MYBRANCH.merge refs/heads/MYBRANCH
Proporcione el nombre de la sucursal correspondiente para el titular del lugar: MYBRANCH
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
vaya a la carpeta de origen y luego ejecute 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**
Intente usar el indicador -f
y colóquelo después del nombre de la sucursal remota.
git push origin master -f
No puedes hacer git push que no sea rápido.
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://[email protected]/srv/git/myrepo.git
entonces
ssh [email protected]
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