¿Por qué debo presionar con fuerza después de cambiar el mensaje de confirmación?

Leí esto sobre cómo cambiar los mensajes de confirmación. La respuesta aceptada dice:

Si ya ha presionado su confirmación en una rama remota, deberá presionar la confirmación con git git push <remote> <branch> --force .

Este es mi entendimiento (también de la respuesta aceptada) de que git push --force sobrescribirá todos los datos en una sucursal remota con uno local.

¿Por qué es necesario empujar después de cambiar el mensaje de confirmación necesario? ¿Qué sucede si cambio el mensaje de confirmación e intento presionar sin -f o --force ?

4
06 дек. MD XF set 06 dec. 2016-12-06 22:14 '16 a las 10:14 pm 2016-12-06 22:14
@ 2 respuestas

Al cambiar los compromisos, cambia su SHA1, lo que significa que el historial local y remoto ya no son los mismos.

Si desea reemplazar el historial eliminado con su local (modificado), debe forzarlo .
Si no lo hace, Git se negará a hacer clic y le pedirá que tire (lo que en este caso no ayudará, ya que se habría fusionado con contenido idéntico, pero con otros mensajes de confirmación)

Presionar con fuerza puede ser peligroso porque obliga a otros colaboradores a restablecer su propia historia local para usar una nueva (presionada de manera forzada).

Como se comentó, --force-with-lease más seguro (si la rama remota que está cambiando ha cambiado desde su último intento, es decir, otros lo han estado utilizando y presionando de nuevo, entonces se rechazará el clic forzado).
Combine esto con una política de retirada razonable (donde siempre sobrecarga lo que aún no ha presionado), y la presión forzada se vuelve menos necesaria.

6
06 дек. La respuesta está dada por VonC 06 dec. 2016-12-06 22:15 '16 a las 10:15 pm 2016-12-06 22:15

Entiendo (también de la respuesta aceptada) que git push -force sobrescribirá todos los datos en una sucursal remota con una local.

Al cambiar la confirmación, ya ha sobrescrito su historial de git (al cambiar la corrección SHA1). Amend excelente si no ha publicado sus cambios, pero una vez que lo haga, la historia no debería dejarle engañar, porque si alguien ya recibió sus cambios, cuando intenten retirarlos nuevamente, puede fallar. En lugar de realizar cambios en la confirmación, solo debe realizar una nueva confirmación con los cambios.

¿Qué sucede si cambio el mensaje de confirmación e intento presionar sin -f o -force?

Git se negará a actualizar una sucursal remota con su sucursal (con un cambio en un compromiso público), porque arreglar su sucursal no es un descendiente directo de la solución actual del encabezado de la sucursal en la que está haciendo clic.

border=0

Si este no fuera el caso, entonces dos personas que estaban presionando en el mismo repositorio casi al mismo tiempo no sabrían que ocurrió un nuevo compromiso al mismo tiempo, y quien empujó el último habría perdido su trabajo. Pulsador anterior sin que ninguno de ellos lo sepa.

¿Por qué es necesario empujar después de cambiar el mensaje de confirmación necesario?

Como mencioné anteriormente, git no permitirá hacer clic en una rama remota. Puedes leer esta pregunta . Tiene muchas soluciones posibles a este problema.

0
06 дек. respuesta dada abhiarora 06 dic. 2016-12-06 23:13 '16 a las 11:13 PM 2016-12-06 23:13

Otras preguntas sobre etiquetas o hacer una pregunta