2012-08-23 7 views
5

Cometí un error al configurar un control remoto en mi repositorio git y fui a buscar desde un proyecto totalmente diferente.Reparar el historial de Git después de recuperar el Repo incorrecto

Afortunadamente, no hubo fusión, pero ahora tengo el historial de 2 proyectos flotando en mi repositorio y estoy tratando de encontrar la forma de hacer que mi repos vuelva al estado en que se encontraba antes de hacer el error. ha podido recuperar.

He estado leyendo sobre reflog, rebase, gc y otros comandos tratando de averiguar lo que ayudará a deshacerse de las cosas que accidentalmente exagerado, pero hasta el momento no tengo ninguna.

Parece que tengo el historial de ambos proyectos en mi repositorio, pero son totalmente independientes. Hay esencialmente 2 árboles separados de confirmaciones que se ejecutan en paralelo entre sí, de hecho, esto es lo que veo en gitk cuando se mira en todas las ramas:

enter image description here

Se puede ver que los comete en el medio están no conectado a los commits al principio y al final de la historia. En cuanto a la fecha, están intercalados, pero gitk no los muestra intercalados por alguna razón.

Los commits aislados (en el medio de la imagen) son de los que trato de deshacerme, y no parecen estar unidos a ninguna rama. No hay ninguna ruta desde ninguno de los HEAD en mi repo hasta este conjunto de confirmaciones.

Hasta ahora he intentado (en orden en caso de que se hace una diferencia):

git remote prune 
git prune 
git gc 
git gc --aggressive --prune=tomorrow 
git remote update --prune 
git fetch --all 

pero nada ha ayudado todavía. ¿Alguien puede sugerirme cómo puedo eliminar estos commits de mi repositorio?

Respuesta

8

Solo necesita quitar la etiqueta colgante (0.1.something, donde something no está visible en su captura de pantalla) usando git tag -d 0.1.something. Una vez hecho esto, los commits estarán habilitados.

Siempre que haya una etiqueta que llegue a un compromiso, este compromiso se considera alcanzable y persistirá "para siempre", es efectivamente inmune a la recolección de basura hasta que elimine cualquier referencia que lo señale (ramas, etiquetas, otras referencias, ...)

+1

Gracias, eso era exactamente lo que necesitaba, no se me ocurrió que la etiqueta podría impedirme eliminar las confirmaciones +1 – chrisbunney