Modificar el historial de Github

Pido disculpas por adelantado por hacer esta pregunta, ya que se me ha preguntado un millón de veces.

Necesito modificar el historial de git de mi proyecto, el historial de commit actualmente tiene este aspecto:

[E] <- [D] <- [C] <- [B] <- [A] 

Donde: A: Agregó un código, B: Agregó un código y agregó algunos datos, C: Proyecto reestructurado, D: Eliminó todos los datos, E: Agregó un código

El problema fue que en commit C nuestro grupo de proyecto fue notificado de que los datos tenían que almacenarse localmente y no públicamente en git. No tengo mucha experiencia con git, así que lo primero que hice fue eliminar los datos. Pero eso no hizo mucho ya que aún se podía acceder a los datos en la historia. ¿Cómo soluciono el problema para que el historial se vea así?

 [E] <- [C] <- [B] <- [A] 

Donde: A: Agregó un código, B: Agregó un código, C: Proyecto reestructurado (Sin references a datos) E: Agregó un código

Aquí hay una forma de eliminar una confirmación específica si proviene del historial

git rebase –onto commit-id commit-id HEAD

Puede usar el command a continuación para eliminar la confirmación "D" del historial

git rebase –onto DE HEAD

Puedes hacerlo con estos commands:

 # Rebase from C commit in interactive mode... git rebase -i C # Then remove the D commit line in the editor, save and quit. # You can edit commit messages by using "edit" option for # concerned commits. # Resolve conflicts if needed and finish rebasing. 

O (sin la edición del post de confirmación):

 # Rebase from C: Pick E history but exclude D history git rebase --onto CDE 

Luego, deberá presionar forzar la modificación (con todos los problemas que pueda ocasionar …).

 # --force-with-lease means: # "If anybody already pushed after the last known origin/<branch> sha1, # The push force command will be aborted (avoids to loose newers pushes # from your friends...). git push --force-with-lease origin <branch>