Hacer clic accidentalmente: cambiar git mensaje de confirmación

En mi repositorio local, tengo un mensaje con un mensaje sobre confirmación incorrecta.

Ya publiqué el mensaje incorrecto con el mensaje git push .

Ahora el repositorio remoto (que está alojado en GitHub) también tiene el mensaje de confirmación incorrecto.

Ya he intentado git commit --amend , pero descubrí que no funcionaría para mí en esta situación, porque hice confirmaciones adicionales con la incorrecta.

¿Cómo podrías arreglar esta situación?

63
17 февр. fijado por Jonny el 17 de febrero 2011-02-17 20:29 '11 a las 20:29 2011-02-17 20:29
@ 4 respuestas

La solución más simple es ( pero, lea la respuesta completa antes de hacer esto ):

  • git rebase -i <hash-of-commit-preceding-the-incorrect-one>
  • En el editor que se abre, cambie la pick para reword a reword en la línea para corregirlo incorrectamente.
  • Guarde el archivo y cierre el editor.
  • El editor se abrirá nuevamente con un mensaje sobre confirmación incorrecta. Arreglarlo
  • Guarde el archivo y cierre el editor.
  • git push --force a actualizar git push --force .

Esto significa que publicará una versión modificada de un repositorio previamente publicado. Si alguien sacó o sacó de su repo entre usted, cuando cometió un error con el mensaje equivocado acerca de la comisión, y cuando lo solucionó, experimentarán algunas dificultades más adelante. Por lo tanto, asegúrese de que puede aceptar esta consecuencia antes de intentar hacerlo.

89
17 февр. Respuesta dada por Dan Molding 17 de febrero 2011-02-17 20:50 '11 a las 20:50 2011-02-17 20:50

En lugar de seguir toda la ruta de reenvío para un solo compromiso:

 git reset --soft head~ git commit -m "The message you wanted to use" git push -f 
border=0

Puedes ver los parámetros en la página de manual de git-reset .

Para el proyecto en el que está trabajando, el historial modificado no debería ser un problema.

33
17 февр. Abizern respondió el 17 de febrero 2011-02-17 21:03 '11 a las 21:03 2011-02-17 21:03

Si necesita cambiar el mensaje de confirmación anterior a varias sucursales (es decir, un mensaje con un mensaje de error está presente en varias sucursales), puede usar

 git filter-branch -f --msg-filter 'sed "s/<old message>/<new message>/g"' -- --all 

para reemplazar el mensaje de confirmación.

Git creará un directorio temporal para sobrescribir y, opcionalmente, realizar copias de seguridad de enlaces antiguos a refs / original /.

-f proporcionará la operación. Esto es necesario si el directorio temporal ya está presente o si ya hay enlaces almacenados en el archivo refs / original. Si no, puedes restablecer esta bandera.

-- separa las opciones de bifurcación del filtro de los parámetros de la versión

--all se asegurarán de que todas las ramas y etiquetas se sobrescriban.

Debido a la copia de seguridad de sus enlaces anteriores, puede volver fácilmente al estado antes de ejecutar el comando.

Digamos que desea restaurar su maestro y acceder a él en la rama old_master:

 git checkout -b old_master refs/original/refs/heads/master 

Una vez que esté satisfecho con sus cambios, use git push -f para realizar cambios en su repositorio público.

Tenga en cuenta que debe informar a los empleados de esto, ya que todos los hashes de confirmación que comienzan con la primera modificación se han modificado.

5
15 нояб. La respuesta es dada por los sebers el 15 de noviembre. 2012-11-15 12:46 '12 a las 12:46 2012-11-15 12:46

Si no presionó el código en la rama remota (Github / Bitbucket), puede cambiar el mensaje de confirmación en la línea de comando, como se muestra a continuación.

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

Si estás trabajando en una rama específica, hazlo.

 git commit --amend -m "BRANCH-NAME: new message" 

Si ya ha hecho clic en el código con el mensaje incorrecto, debe tener cuidado al cambiar el mensaje. Después de cambiar el mensaje de confirmación e intentar presionarlo nuevamente, tiene problemas. Para que sea suave, siga estos pasos. Por favor, lea la respuesta completa antes de hacerlo.

 git commit --amend -m "BRANCH-NAME : your new message" git push -f origin BRANCH-NAME # Not a best practice. Read below why? 

Nota importante :. Cuando presionas push, puedes encontrar problemas de código en los que otros desarrolladores están trabajando en la misma rama. Por lo tanto, para evitar conflictos, debe extraer el código de su sucursal antes de presionar la fuerza.

  git commit --amend -m "BRANCH-NAME : your new message" git pull origin BRANCH-NAME git push -f origin BRANCH-NAME 

Esta es la mejor práctica al cambiar un mensaje de confirmación, si ya se ha pulsado.

2
13 янв. La respuesta la da Packer el 13 de enero. 2015-01-13 10:08 '15 a las 10:08 2015-01-13 10:08

Otras preguntas sobre o haga una pregunta