tipos - git ver archivos modificados
Cambio del mensaje de confirmación de git después de la inserción(dado que nadie extrajo el control remoto) (11)
Historia cambiante
Si es la confirmación más reciente, simplemente puede hacer esto:
git commit --amend
Esto abre el editor con el último mensaje de confirmación y le permite editar el mensaje. (Puede usar -m
si desea borrar el mensaje anterior y usar uno nuevo).
Emprendedor
Y luego, cuando empujas, haz esto:
git push --force-with-lease <repository> <branch>
O puedes usar "+":
git push <repository> +<branch>
O puedes usar --force
:
git push --force <repository> <branch>
Tenga cuidado al usar estos comandos.
Si alguien más introdujo cambios en la misma rama, es probable que desee evitar destruirlos. La opción
--force-with-lease
es la más segura, porque abortará si hay algún cambio en sentido 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 / recogiendo después
Cualquier persona que ya haya sacado recibirá un mensaje de error y deberá actualizar (asumiendo que ellos mismos no están haciendo 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 rama, esos cambios serán destruidos.
Una nota sobre la modificación de la historia.
Los datos destruidos son realmente solo el antiguo mensaje de confirmación, pero --force
no lo sabe, y felizmente también eliminará otros datos. Así que piense en " --force
" como "Quiero destruir datos, y sé con seguridad qué datos se están destruyendo". Pero cuando se confirman los datos destruidos, a menudo se pueden recuperar las confirmaciones antiguas del reflog; en realidad, los datos quedan huérfanos en lugar de destruidos (aunque las confirmaciones huérfanas se eliminan periódicamente).
Si no crees que estás destruyendo datos, aléjate de ... --force
... pueden pasar cosas malas .
Esta es la razón por la que --force-with-lease
es algo más seguro.
He hecho un git commit y un push posterior. Me gustaría cambiar el mensaje de confirmación. Si lo comprendo correctamente, esto no es recomendable porque alguien podría haberlo retirado del repositorio remoto antes de realizar dichos cambios. ¿Y si sé que nadie ha tirado?
¿Hay alguna forma de hacer esto?
Comando 1 .
git commit --amend -m "New and correct message"
Entonces,
Comando 2 .
git push origin --force
Debe tenerse en cuenta que si utiliza push --force
con refs mutiple, TODOS serán modificados como resultado. Asegúrate de prestar atención a dónde está configurado tu repositorio git para presionar. Afortunadamente, hay una manera de salvaguardar el proceso ligeramente, especificando una única rama para actualizar. Lee de las páginas del manual de git:
Tenga en cuenta que --force se aplica a todos los refs que se empujan, por lo tanto, usarlo con push.default configurado para hacer coincidir o con múltiples destinos de push configurados con control remoto. *. Push puede sobrescribir los refs que no sean la rama actual (incluidos los refs locales que son estrictamente detrás de su contraparte remota). Para forzar un empuje a solo una rama, use un + delante de refspec para empujar (por ejemplo, git push origin + master para forzar un empuje a la rama maestra).
Esto me funciona muy bien,
git checkout origen / sucursal
Si ya estás en la sucursal, entonces es mejor hacer pull o rebase
git pull
o
git -c core.quotepath=false fetch origin --progress --prune
Más tarde, simplemente puede utilizar
git commit --amend -m "Your message here"
o si quieres abrir un editor de texto, usa
git commit --amend
Prefiero usar el editor de texto si tiene muchos comentarios. Puedes configurar tu editor de texto preferido con 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 correr
git push --force
Y tu estas listo
Otra opción es crear una "confirmación de errata" adicional (y push) que haga referencia al objeto de confirmación que contiene el error: la nueva confirmación de errata también proporciona la corrección. Una confirmación de errata es una confirmación sin cambios sustanciales en el código, pero sí un mensaje de confirmación importante; por ejemplo, agregue un carácter de espacio a su archivo Léame y confirme la modificación con el mensaje de confirmación importante, o use la opción git --allow-empty
. Sin duda, es más fácil y más seguro que rebasar, no modifica el historial real y mantiene el árbol de rama limpio (usar amend
también es una buena opción si está corrigiendo la confirmación más reciente, pero una confirmación de errata puede ser una buena opción para cometido mayor). Este tipo de cosas ocurren tan raramente que simplemente documentar el error es suficiente. En el futuro, si necesita buscar en el registro de git una palabra clave característica, es posible que la confirmación original (errónea) no aparezca porque se usó la palabra clave incorrecta en esa confirmación original (el error tipográfico original). Sin embargo, la palabra clave aparecerá. en la confirmación de errata, que le indicará la confirmación original que tuvo el error tipográfico. Aquí hay un ejemplo:
$ git log commit 0c28141c68adae276840f17ccd4766542c33cf1d Author: First Last Date: Wed Aug 8 15:55:52 2018 -0600 Errata commit: This commit has no substantive code change. This commit is provided only to document a correction to a previous commit message. This pertains to commit object e083a7abd8deb5776cb304fa13731a4182a24be1 Original incorrect commit message: Changed background color to red Correction (*change highlighted*): Changed background color to *blue* commit 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4 Author: First Last Date: Wed Aug 8 15:43:16 2018 -0600 Some interim commit message commit e083a7abd8deb5776cb304fa13731a4182a24be1 Author: First Last Date: Wed Aug 8 13:31:32 2018 -0600 Changed background color to red
Podría llegar tarde a la fiesta, aquí hay una respuesta que no veo aquí.
Paso 1 : git rebase -i HEAD~n
para hacer rebase interactiva para las últimas n
confirmaciones afectadas.
git abrirá un editor para manejar esas confirmaciones, observe este comando: # r, reword = use commit, but edit the commit message
, eso es exactamente lo que necesitamos.
Paso 2 : cambia la pick
a la r
para aquellas confirmaciones que deseas actualizar el msg. Guarda y cierra el editor.
Paso 3 : en los siguientes archivos de confirmación, actualice el mensaje de confirmación como desee.
Paso 4 : después de todos los mensajes de confirmación se actualizan. es posible que desee hacer git push -f
para actualizar el control remoto.
Sólo decir :
git commit --amend -m "New commit message"
y entonces
git push --force
Si desea modificar un compromiso anterior, no el último, deberá usar el comando rebase
como se explica aquí, en la help.github.com/articles/changing-a-commit-message , en la sección Modificación del mensaje de mensajes de confirmación anterior o múltiple
Utilice estos dos pasos en la consola:
git commit --amend -m "new commit message"
y entonces
git push -f
Hecho :)
información adicional para el mismo problema si está utilizando la canalización de bitbucket
edita tu mensaje
git commit --amend
empujar al servidor
git push --force <repository> <branch>
a continuación, agregue --force a su comando push en la tubería
git ftp push --force
Esto eliminará sus compromisos anteriores y empujará su actual.
quitar la fuerza después del primer empuje
Lo probé en pipeline bitbucket y está funcionando bien
git commit --amend
luego edita y luego cambia el mensaje en la ventana actual. Despues de eso haz
git push --force-with-lease