2010-01-14 13 views
5

Estoy trabajando en un repositorio bifurcado en el que el autor tomó el camino sucio y rellenó todas sus dependencias en el directorio lib/en la confirmación inicial. Normalmente, si no era la confirmación inicial, simplemente haría una rebase interactiva y eliminaría la confirmación completa (si eso es todo lo que hizo). Sin embargo, no tengo idea de cómo editaría/eliminaría la confirmación inicial. ¿Hay alguna manera de editar el compromiso inicial y eliminar el directorio lib sin tocar el resto?¿Cómo edito la confirmación inicial en un repositorio github?

EDITAR

que tropezó accidentalmente con la respuesta aquí: Can I remove the initial commit from a Git repo? en la respuesta seleccionada. Eso es lo que obtengo por no buscar más a fondo.

Respuesta

4
$ git filter-branch --parent-filter \ 
    'test $GIT_COMMIT = SECOND && echo "" || cat' \ 
    --tag-name-filter cat -- --all 

donde SEGUNDO es el SHA-1 de la confirmación que desea ser la nueva raíz.

Lo anterior supone que todas las ramas utilizan los mismos primeros y segundos commits. De lo contrario, deberá generalizar la prueba en el filtro principal.

Tenga en cuenta que esta es una medida drástica: reescribirá todo su historial y le impedirá seguir el repositorio del autor. Además, si ha enviado su repositorio a controles remotos, tendrá que golpear a aquellos con git push -f.

+0

ADVERTENCIA: Ref 'refs/heads/master' no se ha modificado ADVERTENCIA: 'refs/mandos a distancia/origin/master' árbitro sin cambios ADVERTENCIA: 'refs/mandos a distancia/origin/master' árbitro sin cambios es lo que dio yo. – Rayne

+0

¡Ack! Desea volver a escribir los padres del * segundo * compromiso, no el primero. Vea la respuesta actualizada y disculpe el falso comienzo. –

+0

Descubrí una manera diferente de hacerlo (que se muestra en mi edición) antes de editar esta publicación. Voy a suponer que esto realmente funciona (confío totalmente en ti <3) y marque tu respuesta como aceptada de todos modos. – Rayne

Cuestiones relacionadas