este problema se puede tratar de diversas formas, pero te enseñamos la que en nuestra opinión es la resolución más completa.
Solución:
Esto me funciona usando TortoiseGit 1.7.12:
- Haga clic con el botón derecho en el directorio de trabajo en el que desea realizar una reorganización interactiva y elija
TortoiseGit
->Show log
del menú contextual. - En el cuadro de diálogo “Registrar mensajes” que aparece, haga clic con el botón derecho en la confirmación más reciente que desee. no Me gusta rebase más y elegir
Rebase master onto this...
del menú contextual. - En el cuadro de diálogo “Rebase” que aparece, marque la
Force Rebase
casilla de verificación y luego haga clic con el botón derecho en la confirmación para elegir entrePick
,Squash
etc., o marque la casillaSquash ALL
casilla de verificación en su caso. - presione el
Start Rebase
botón, que en caso de éxito se convierte en unCommit
y luego en unDone
botón. Presiona todos ellos.
Tenga en cuenta que en su secuencia de comandos de ejemplo, aplastaría / arreglaría la confirmación raíz, que es un caso especial y no funciona como se describe anteriormente porque la confirmación raíz no tiene un padre que pueda seleccionar en el paso 2.
Puede combinar dos confirmaciones adyacentes usando la GUI de la siguiente manera. Recuerde no combinar confirmaciones ya en el repositorio compartido. Ver:
Esto es lo que hice usando Tortoise Git y almacenando el repositorio en Assembla (que aparentemente es similar a GitHub).
Decidí que quería eliminar efectivamente todo mi historial de confirmaciones y comenzar el repositorio desde cero. Podría haber eliminado la carpeta git local y el repositorio correspondiente en Assembla, y luego recrearlo, pero pensé que era mejor averiguar cómo hacerlo de la “manera correcta”.
Entonces, así es como lo logré:
1) Usando Tortoise Git, muestre el registro del repositorio. Resalte todas las confirmaciones, haga clic derecho sobre ellas y seleccione “combinar en una confirmación”.
2) En el cuadro de diálogo que aparece, elimine el comentario de confirmación (que se convierte en una combinación de todos los comentarios anteriores) y reemplácelo con un solo comentario, por ejemplo, REBASE. Luego inicie la confirmación. El repositorio local se iniciará efectivamente desde cero (con todos los archivos aún agregados, por supuesto) sin tener que eliminarlo y volver a crearlo.
3) Desafortunadamente, no puedes enviarlo a Assembla. Rechazará esto, insistiendo en que su “cabeza” está detrás de la rama remota. Entonces, para resolver eso, primero vaya a la página “Configuración” para el repositorio en Assembla. Habilite “Permitir -forzar empuje”.
4) Ahora realice un “empuje forzado”. No sé si Tortoise Git tiene una opción de interfaz gráfica de usuario para esto, pero es fácil de hacer a través del símbolo del sistema:
cd [your repo folder]
git push -f origin
¡Hecho!
ACTUALIZAR:
Para “forzar la inserción” con TortoiseGit, en el cuadro de diálogo de inserción hay casillas de verificación para forzar “cambios conocidos” y “cambios desconocidos”. No estoy seguro de cuál es la diferencia, pero ambos dan como resultado el uso del interruptor git –force. Pruebe con “cambios conocidos” para empezar.