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?
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.
Sólo decir :
git commit --amend -m "New commit message"
y entonces
git push --force
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
Use estos dos pasos en la consola:
git commit --amend -m "new commit message"
y entonces
git push -f
Hecho :)
se debe notar que si utiliza push --force
con 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).
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
Mando 1.
git commit --amend -m "New and correct message"
Entonces,
Mando 2.
git push origin --force
git commit --amend
luego edita y luego cambia el mensaje en la ventana actual. Después de eso haz
git push --force-with-lease
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