tag - tipos de etiquetas en git




¿Cómo puedo forzar adecuadamente un empujón Git? (5)

En primer lugar, no haría ningún cambio directamente en el repositorio "principal". Si realmente quieres tener un repo "principal", solo debes presionarlo, nunca cambiarlo directamente.

Con respecto al error que está recibiendo, ¿ha intentado git pull desde su repositorio local y luego git push al repositorio principal? Lo que estás haciendo actualmente (si lo entendí bien) es forzar el impulso y luego perder tus cambios en el repositorio "principal". Debes fusionar los cambios localmente primero.

He configurado un repositorio remoto "principal" y lo he clonado en mi computadora. Hice algunos cambios locales, actualicé mi repositorio local y devolví los cambios a mi repositorio remoto. Las cosas estaban bien hasta ese punto.

Ahora, tuve que cambiar algo en el repositorio remoto. Entonces cambié algo en mi repositorio local. Me di cuenta de que el cambio al repositorio remoto no era necesario. Así que intenté git push de mi repositorio local a mi repositorio remoto, pero recibí un error como:

Para evitar que pierda el historial, se rechazaron las actualizaciones que no eran de avance rápido. Combine los cambios remotos antes de presionar nuevamente. Consulte la sección 'Nota sobre los adelantos rápidos' de git push --help para obtener más información.

Pensé que probablemente un

git push --force

forzaría a mi copia local a enviar cambios al remoto y hacerlo igual. Forza la actualización , pero cuando vuelvo al repositorio remoto y hago una confirmación, me doy cuenta de que los archivos contienen cambios obsoletos (los que tenía el repositorio remoto principal anteriormente).

Como mencioné en los comentarios a una de las respuestas :

[I] intenté forzar, pero cuando volví al servidor maestro para guardar los cambios, me quedé desactualizado. Así, cuando cometo los repositorios no son los mismos. Y cuando trato de usar git push de nuevo, me sale el mismo error.

¿Cómo puedo solucionar este problema?


Esta fue nuestra solución para reemplazar el maestro en un repositorio corporativo de gitHub mientras mantenemos el historial.

push -f para dominar en repositorios corporativos a menudo está deshabilitado para mantener el historial de sucursales. Esta solución funcionó para nosotros.

git fetch desiredOrigin
git checkout -b master desiredOrigin/master // get origin master
git checkout currentBranch  // move to target branch
git merge -s ours master  // merge using ours over master
// vim will open for the commit message
git checkout master  // move to master
git merge currentBranch  // merge resolved changes into master

empuje su rama al origen desiredOrigin y cree un PR


Si estoy en mi sucursal local A, y quiero forzar la inserción de la sucursal local B en la sucursal de origen, CI puede usar la siguiente sintaxis:

git push --force origin B:C

Solo haz:

git push origin <your_branch_name> --force

o si tienes un repositorio específico:

git push https://git.... --force

Esto eliminará sus compromisos anteriores y empujará su actual.

Puede que no sea apropiado, pero si alguien se topa con esta página, piensa que podría querer una solución simple ...

Bandera corta

También tenga en cuenta que -f es la abreviatura de --force , por lo que

git push origin <your_branch_name> -f

También funcionará.


usa este siguiente comando:

git push -f origin master




git-non-bare-repository