Pregunta Cambiar el mensaje de confirmación de Git después de pulsar (dado que nadie ha sacado desde el control remoto)


Hice un commit de git y un empuje posterior. Me gustaría cambiar el mensaje de confirmación. Si entiendo correctamente, esto no es aconsejable porque alguien podría haber sacado del repositorio remoto antes de realizar dichos cambios. ¿Qué pasa si sé que nadie ha tirado?

¿Hay alguna forma de hacer esto?


702
2018-01-24 01:58


origen


Respuestas:


Cambiando la historia

Si es la confirmación más reciente, simplemente puede hacer esto:

git commit --amend

Esto muestra el editor con el último mensaje de confirmación y le permite editar el mensaje. (Puedes usar -m si quieres eliminar el mensaje anterior y usar uno nuevo.)

Emprendedor

Y luego cuando presionas, haz esto:

git push --force-with-lease <repository> <branch>

O puede usar "+":

git push <repository> +<branch>

O puedes usar --force:

git push --force <repository> <branch>

Tenga cuidado al usar estos comandos.

  • Si alguien más presionó cambios en la misma rama, es probable que desee evitar destruir esos cambios. los --force-with-lease la opción es la más segura, porque abortará si hay cambios en la cadena ascendente (

  • Si no especifica la rama explícitamente, Git usará la configuración de inserción predeterminada. Si su configuración de inserción predeterminada es "coincidente", entonces puede destruir los cambios en varias ramas al mismo tiempo.

Tirando / buscando después

Cualquiera que ya haya sacado recibirá un mensaje de error y deberá actualizar (suponiendo que no realice ningún cambio) haciendo algo como esto:

git fetch origin
git reset --hard origin/master # Loses local commits

Tenga cuidado al usar reset --hard. Si tiene cambios en la sucursal, esos cambios serán destruidos.

Una nota sobre la modificación de la historia

La información destruida es solo el mensaje de confirmación anterior, pero --force no lo sabe, y felizmente borrará otros datos también. Entonces piensa en --force como "Quiero destruir datos, y sé con certeza qué datos se están destruyendo". Pero cuando se comprometen los datos destruidos, a menudo puede recuperar confirmaciones anteriores desde el reflog; los datos son en realidad huérfano en lugar de destruido (aunque las confirmaciones huérfanas se eliminan periódicamente).

Si no crees que estás destruyendo datos, entonces mantente alejado de --force... cosas malas pueden pasar.

Esta es la razón por --force-with-lease es algo más seguro.


1015
2018-01-24 02:02



Sólo decir :

git commit --amend -m "New commit message"

y entonces

git push --force

298
2017-12-31 06:45



Podría llegar tarde a la fiesta, aquí hay una respuesta que no veo aquí.

Paso 1: git rebase -i HEAD~n hacer una rebase interactiva para el último n se compromete

git mostrará un editor para manejar esos commits, observe este comando: # r, reword = use commit, but edit the commit message, eso es exactamente lo que necesitamos.

Paso 2: cambio pick a r para aquellos confirma que desea actualizar el msg. Guarde y cierre el editor.

Paso 3: en los siguientes archivos de confirmación, actualice el mensaje de confirmación como lo desee

Etapa 4: después de que todos los mensajes de confirmación se actualicen. es posible que desee hacer git push -f para actualizar el control remoto


143
2018-02-01 19:17



Use estos dos pasos en la consola:

git commit --amend -m "new commit message"

y entonces

git push -f

Hecho :)


34
2018-06-19 09:48



se debe notar que si utiliza push --forcecon refs mutiples, TODOS serán modificados como resultado. Asegúrese de prestar atención a dónde está configurado su envío de git repo. Afortunadamente, hay una forma de salvaguardar el proceso ligeramente, especificando una sola rama para actualizar. Lea de las páginas man de git:

Tenga en cuenta que --force se aplica a todos los refs que se empujan, por lo tanto, utilizando   con push.default configurado para coincidir o con múltiples push   destinos configurados con control remoto. *. push puede sobrescribir refs otro   que la sucursal actual (incluidos los refs locales que están estrictamente detrás   su contraparte remota). Para forzar un empuje a una sola rama, use un +   delante del refspec para empujar (por ejemplo, git push origen + master para forzar   un empujón a la rama principal).


17
2018-03-23 23:47



Si desea modificar una confirmación anterior, no la última, deberá usar rebase comando como se explica aquí,Página de ayuda de Github , sobre el Enmendar el mensaje de mensajes de confirmación anteriores o múltiples sección


9
2017-10-28 10:43



Mando 1.

git commit --amend -m "New and correct message"

Entonces,

Mando 2.

git push origin --force

5
2018-04-18 03:52



git commit --amend

luego edita y luego cambia el mensaje en la ventana actual. Después de eso haz

git push --force-with-lease

3
2018-01-05 06:09



Esto funciona para mí bastante bien,

git checkout origin / branchname

si ya estás en una sucursal, entonces es mejor hacer pull o rebase

git pull

o

git -c core.quotepath=false fetch origin --progress --prune

Más tarde puedes simplemente usar

git commit --amend -m "Your message here"

o si te gusta abrir el editor de texto, utiliza

git commit --amend

Preferiré usar el editor de texto si tienes muchos comentarios. Puede configurar su editor de texto preferido con el comando

git config --global core.editor your_preffered_editor_here

De todos modos, cuando haya terminado de cambiar el mensaje de confirmación, guárdelo y salga

y luego corre

git push --force

Y tu estas listo


1
2018-05-12 13:51