2010-03-28 10 views
9

Usando TortoiseGit (estoy tratando de evitar el uso de la línea de comandos) ¿cómo se eliminan todas las confirmaciones acordadas a partir de una determinada confirmación y "volver al pasado" (ejemplo de uso: continuación haciendo algo, pensé que no me gustaba hacia dónde iba, y decidí ir "atrás" sin tener en cuenta todo lo demás).Usando TortoiseGit borrando todo después de una determinada confirmación

En resumen, deseo 5 commits "atrás", y eliminarlos después.

Respuesta

1

Desde la línea de comandos, puede usar el comando Revertir o Restablecer. TortoiseGit debe tener comandos similares, ¿quizás puede acceder a ellos mirando el registro de confirmación?

(no he usado TortoiseGit así que no puedo comprobarlo)

+0

Oh, okey. Bueno, por lo que puedo ver, ha revertido el comando. Pero revierte los cambios que hice en la copia de trabajo, de vuelta al último compromiso. No vi una manera de revertir varios compromisos "en el camino".En cualquier caso, al menos +1 por intentar :) – richard

+0

Ah, no me di cuenta de que quería volver a 5 commits X ( 'git-reset' (-hard) debería ser su nuevo amigo;) – Tuxified

2

nunca he utilizado la tortuga nada (a menos que cuente el grupo de música electrónica), pero te voy a dar esta información en caso de que no encuentra una manera de hacerlo con la GUI o termina decidiendo ir CLI después de todo.

Como @Tuxified menciona, puede lograr esto con git reset --hard <COMMIT>. Debe especificar una confirmación, que se puede hacer en cualquiera de una panoplia intimidante de formas posibles; los más comunes tienen formas como HEAD~4, que especifica una confirmación 4 confirma antes del encabezado de la rama actual, y deadbeef42, que especifica una confirmación cuyo SHA1 comienza con 0xdeadbeef42. Si está ejecutando Linux o OSX, puede obtener todos los detalles sobre especificadores de compromisos a través del man git-rev-parse, en "ESPECIFICAR REVISIONES".

También puede cambiar el nombre de la rama actual (git branch -m new_branch_name) y luego crear una nueva bifurcación con su encabezado en el lugar al que desee volver. La ventaja es que si terminas queriendo usar todas o algunas de las cosas que hiciste allí, aún puedes acceder fácilmente; y si escribes el commit, eres salvado de un gran momento de Holycrap. Además, las ramas de git son súper livianas, por lo que la única desventaja real es que habrá otra rama en la lista. Para crear la nueva rama maestra, debe usar git branch master <COMMIT>, y luego verifíquela. Entonces, el efecto neto aquí es el mismo que la primera opción, excepto que todavía tiene sus cambios anteriores guardados en la rama new_branch_name. Incluso puede fusionar esos cambios más tarde, después de nuevos commits al master, si así lo desea.

Tenga en cuenta que cualquiera de estas técnicas se considera "reescribiendo el historial" y causará problemas si comparte su repositorio con otras. Si está siendo inteligente y está presionando a un repositorio de respaldo en la ciudad de la nube u otra PC, tendrá que arreglar las cosas en ese extremo antes de poder presionar de nuevo.

Probablemente esta sea más información de la que necesita ahora, pero si termina usando git mucho, probablemente querrá aprender esto en algún momento. Lo siento, no sé cómo usar Tortoise ...

27

Ir a TortoiseGit -> Mostrar registro. Seleccione la confirmación más reciente que desea conservar, todo lo anterior se borrará. A continuación, haga clic derecho sobre él y seleccione "Restablecer" maestro "a esto" y elija Difícil. Sin embargo, ten cuidado porque una vez que haces esto, todos los commits se perderán para siempre, a menos que estén almacenados en otra rama en alguna parte.

+4

Side nota: cuando inserta este cambio en maestro, debe seleccionar "Forzar sobrescribir rama existente" o fallará. – Powerlord

+5

En TortoiseGit v1.8.14, la opción "Forzar sobrescritura" ha cambiado a "Opciones"> "Forzar: puede descartar"> marcando la casilla "cambios conocidos". No necesité usar la opción más destructiva de "cambios desconocidos". – ShawnFeatherly

Cuestiones relacionadas