Você já tentou:
git rebase -i A
E descartar os commits C e E
Você pode ter um problema, já que os empurrou para o controle remoto antes, mas não é possível reescrever o histórico se já tiver passado para um controle remoto. Quero dizer, você pode, mas as pessoas que puxaram depois que você empurrou terão um problema, pois, de repente, a história delas não é a mesma do histórico remoto.