Estos son los pasos para editar el mensaje de confirmación de una confirmación anterior ( que no es la confirmación más reciente ) utilizando SourceTree para Windows versión 1.5.2.0 :
Paso 1
Seleccione la confirmación inmediatamente antes de la confirmación que desea editar. Por ejemplo, si quiero editar el commit con el mensaje "FOOBAR!" entonces necesito seleccionar el commit que viene justo antes:
Paso 2
Haga clic derecho en la confirmación seleccionada y haga clic en Rebase children...interactively
:
Paso 3
Seleccione la confirmación que desea editar, luego haga clic Edit Message
en la parte inferior. En este caso, selecciono el commit con el mensaje "FOOBAR!":
Paso 4
Edite el mensaje de confirmación y luego haga clic OK
. En mi ejemplo, he agregado "SHAZBOT! SKADOOSH!"
Paso 5
Cuando regrese a la ventana interactiva de rebase, haga clic en OK
para finalizar la rebase:
Paso 6
En este punto, necesitará forzar sus nuevos cambios ya que ha modificado las confirmaciones que ya ha presionado. Sin embargo, la versión 1.5.2.0 actual de SourceTree para Windows no le permite forzar a través de la GUI, por lo que deberá usar Git desde la línea de comandos de todos modos para hacerlo.
Haga clic Terminal
en la GUI para abrir una terminal.
Paso 7
Desde el terminal forzar-empujar con el siguiente comando,
git push origin <branch> -f
donde <branch>
está el nombre de la rama que desea empujar, y -f
significa forzar el empuje. El impulso forzado sobrescribirá sus confirmaciones en su repositorio remoto, pero eso está bien en su caso ya que dijo que no está compartiendo su repositorio con otras personas.
¡Eso es! Ya terminaste!
En la versión 1.9.6.1. Para la confirmación sin empujar.
fuente
Si el mensaje de comentario incluye no inglés , utilizando el método proporcionado por user456814, esos caracteres serán reemplazados por signos de interrogación. (probado bajo sourcetree Ver2.5.5.0)
Entonces tengo que usar el siguiente método.
PRECAUCIÓN : si el compromiso ha sido extraído por otros miembros, los cambios a continuación pueden causarles caos.
Paso 1 : en la ventana principal de sourcetree, localice su pestaña de repositorio y haga clic en el botón " terminal " para abrir la consola de comandos de git.
Paso2 :
[Situación A] : el compromiso de destino es el último.
1) En la consola de comando git, ingrese
2) Si la confirmación del objetivo ha sido empujada al control remoto, debe presionar nuevamente por la fuerza. En la consola de comando git, ingrese
[Situación B] : el compromiso de destino no es el último.
1) En la consola de comando git, ingrese
Es aplastar los últimos n commits. por ejemplo, si desea editar el mensaje antes del último, n es 2. Este comando abrirá una ventana vi, la primera palabra de cada línea es " pick " y cambia el "pick" a " reword " para la línea quieres editar Luego, ingrese
:wq
para guardar y salir de esa ventana vi. Ahora, se abrirá una nueva ventana vi, en esta ventana ingresará su nuevo mensaje. Utilice también:wq
para guardar y salir.2) Si la confirmación del objetivo ha sido empujada al control remoto, debe presionar nuevamente por la fuerza. En la consola de comando git, ingrese
Finalmente : en la ventana principal de sourcetree, presione
F5
para actualizar.fuente
Actualizar
Nota: esta respuesta se escribió originalmente con respecto a las versiones anteriores de SourceTree para Windows, y ahora está desactualizada.
Vea mi nueva respuesta para la versión actual de SourceTree para Windows, 1.5.2.0 . Dejo esta respuesta para propósitos históricos.
Respuesta original
Con respecto a las GUI de Git, no, no cubren todas las funciones de Git . Ni siquiera se acercan . Le sugiero que consulte una de las respuestas en ¿Cómo edito un mensaje de confirmación incorrecto en Git?, Git es lo suficientemente flexible como para que haya múltiples soluciones ... desde la línea de comandos.
SourceTree podría venir con el shell msysgit bash ya, o podría usar el shell de comandos estándar de Windows. De cualquier manera, lo abre desde SourceTree haciendo clic en el botón Terminal:
Usted establece qué terminal usa SourceTree (bash o Windows) aquí:
Una forma de resolver el problema en SourceTree
Dicho esto, aquí hay una manera de hacerlo en SourceTree. Como mencionó en los comentarios que no le importa "volver a la confirmación defectuosa" (con lo cual supongo que realmente quiere decir reiniciar, que es una operación diferente en Git), estos son los pasos:
Reset current branch to this commit
, y seleccionando la opción de restablecimiento completo desde el menú desplegable.Con respecto a este comentario :
¿Esto significa que eres la única persona que trabaja en el repositorio? Esto es importante porque no es trivial cambiar el historial de un repositorio (como enmendar un commit) sin causar problemas a sus colaboradores. Sin embargo, suponiendo que usted sea la única persona que trabaja en el repositorio, lo siguiente que querrá hacer es forzar el cambio de su historial al control remoto.
Tenga en cuenta, sin embargo, que debido a que realizó un restablecimiento completo de la confirmación defectuosa, luego de forzar el empuje hace que pierda todo el trabajo que vino después. Si está bien, entonces es posible que necesite usar el siguiente comando en la línea de comando para hacer el empuje forzado, porque no pude encontrar una opción para hacerlo en SourceTree:
Esto también supone que BitBucket le permitirá forzar el empuje a un repositorio.
De todos modos, realmente debería aprender a usar Git desde la línea de comandos, lo que lo hará más competente en Git. #ProTip, use msysgit y active el modo Edición rápida en las propiedades del terminal, para que pueda hacer doble clic para resaltar una línea de texto, haga clic con el botón derecho para copiar y haga clic con el botón derecho nuevamente para pegar. Es muy rapido.
fuente