Editar un post de confirmación en SourceTree Windows (ya presionado a distancia)

¿Cómo edito un post de confirmación incorrecto en SourceTree sin tocar la línea de command?

Detalles adicionales:

  • Este no es el último compromiso.
  • Todo ya fue empujado a Bitbucket.
  • Este es un repository privado y yo soy el único queueborador.
  • No me importa perder ninguna de las confirmaciones anteriores, ya que puedo volver a comprometerlas en cualquier momento.
  • No obstante, no quiero perder ninguna modificación de código jamás realizada.

Salir:

  • Como parece imposible en este momento según sus comentarios y respuestas, voy a crear un nuevo repository y comenzar de nuevo. ¡Gracias a todos por su ayuda!

Estos son los pasos para editar el post de confirmación de una confirmación previa ( 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 la confirmación con el post "¡FOOBAR!" entonces necesito seleccionar la confirmación que viene justo antes de ella:

Seleccionar commit antes del que quiero editar.

Paso 2

Haga clic con el button derecho en la confirmación seleccionada y click Rebase children...interactively :

Seleccionar "Rebase hijos interactivamente".

Paso 3

Seleccione la confirmación que desea editar, luego click Edit Message en la parte inferior. En este caso, estoy seleccionando la confirmación con el post "¡FOOBAR!":

Seleccione la confirmación que desea editar.

Etapa 4

Edite el post de confirmación y luego haga OK en OK . En mi ejemplo, he agregado "SHAZBOT! SKADOOSH!"

Edite el mensaje de confirmación

Paso 5

Cuando regrese a la window interactiva de rebase, click OK para finalizar la rebase:

Haga clic en Aceptar para terminar.

Paso 6

Llegados a este punto, deberás forzar tus nuevos cambios ya que has confirmado los commits que ya has aplicado. Sin embargo, la versión 1.5.2.0 actual de SourceTree para Windows no le permite presionar forzar a través de la GUI, por lo que tendrá que usar Git desde la command-line para poder hacerlo.

Haga clic en Terminal desde la GUI para abrir una terminal.

Haga clic en Terminal

Paso 7

Desde la fuerza de empuje terminal con el siguiente command,

 git push origin <branch> -f 

donde <branch> es el nombre de la twig que desea insert, y -f significa forzar la inserción. El empuje de fuerza sobrescribirá sus confirmaciones en su repository remoto, pero eso está bien en su caso ya que dijo que no está compartiendo su repository con otras personas.

¡Eso es! ¡Terminaste!

En la versión 1.9.6.1. Para la confirmación sin preparación.

  1. Haga clic en la descripción previamente comprometida
  2. Haz clic en el icono de Commit
  3. Ingrese el nuevo post de confirmación y elija " Confirmar último de Ammend " en el menu desplegable Opciones de confirmación .
  4. Confirma tu post

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 atrás para propósitos históricos.

Respuesta original

como yo estoy en Windows, no tengo una herramienta de línea de command ni sé cómo usar uno 🙁 ¿Es la única manera de resolverlo? ¿La GUI no cubre todas las funciones de git? – Original Poster

En cuanto a las GUI de Git, no, no cubren todas las funciones de Git . Ni siquiera se acercan . Le sugiero que revise una de las respuestas en ¿Cómo edito un post de confirmación incorrecto en Git? , Git es lo suficientemente flexible como para que haya múltiples soluciones … desde la command-line.

SourceTree realmente podría venir con msysgit bash shell, o podría usar el shell de commands estándar de Windows. De cualquier manera, lo abre desde SourceTree haciendo clic en el button Terminal:

enter image description here

Establece qué terminal utiliza SourceTree (bash o Windows) aquí:

enter image description here

Una forma de resolver el problema en SourceTree

Dicho esto, esta es una forma de hacerlo en SourceTree. Como mencionaste en los comentarios que no te importa "volver a cometer errores" (supongo que realmente quieres decir reiniciar, que es una operación diferente en Git), estos son los pasos:

  1. Realice un restablecimiento completo en SourceTree a la confirmación incorrecta haciendo clic derecho sobre él y seleccionando Reset current branch to this commit , y seleccionando la opción de restablecimiento completo del menu desplegable. enter image description here
  2. Haga clic en el button Confirmar, luego
  3. Haga clic en la checkbox en la parte inferior que dice "Modificar último compromiso". enter image description here
  4. Realice los cambios que desee en el post y luego click Confirmar nuevamente. Voila!

En cuanto a este comentario :

si no es posible porque ya se envió a Bitbucket, no me importaría crear un nuevo repository y empezar de nuevo.

¿Esto significa que eres la única persona que trabaja en el repository? Esto es importante porque no es trivial cambiar el historial de un repository (como al modificar un compromiso) sin causar problemas a sus queueboradores. Sin embargo, suponiendo que usted es la única persona que trabaja en el repository, lo siguiente que le gustaría hacer es forzar su historia cambiada al control remoto.

Tenga en count, sin embargo, que debido a que hizo un restablecimiento completo a la confirmación errónea, entonces forzar la fuerza hace que pierda todo el trabajo que viene después. Si está bien, puede que necesite usar el siguiente command en la línea de command para hacer el empuje de fuerza, porque no pude encontrar una opción para hacerlo en SourceTree:

 git push remote-repo head -f 

Esto también supone que BitBucket le permitirá forzar el envío a un repository.

Sin embargo, en realidad debería aprender a usar Git desde la command-line, eso le hará más competente en Git. #ProTip, use msysgit y active el modo de edición rápida en las properties del terminal, de modo que puede hacer doble clic para resaltar una línea de text, hacer clic con el button derecho para copyr y hacer clic con el button secundario para pegar. Es bastante rápido.