Bem a solução é baseado no recurso chamado rebase, onde se reconstrõe a estrutura do repositorio removendo um determinado commit e executando o merge do commit anterior com o próximo commit na estrutura.
Para tal atividade você precisa identificar os Hash de identificação do Commit que se deseja remover e de seu antecessor, ou seja do commit que vem logo após ele.
Para isto use o comando "git status" e encontre o commit que deseja remover veja na figura abaixo:

Bem, o commit que pretendo remover é o commit de hash: be535720827d0caea009bb8faae993ee6d1d595c
E pretendo substituí-lo com base no commit de hash: c82b7f44f8d66343b6553cbf15fe40e1c6f6cd4b que é seu antecessor.
Para isto devemos usar o comando git-rebase no fomato: git rebase --onto <rev antecessora> <rev a remover>
Ficando o comando da seguinte forma:
git rebase --onto c82b7f44f8d66343b6553cbf15fe40e1c6f6cd4b be535720827d0caea009bb8faae993ee6d1d595c

Neste caso o processo ouve um conflito visto que o arquivo teste 3 foi deletado no HEAD e modificado durante o processo de commit, desta forma é preciso intervir manualmente. Caso o merge do rebase possa ser feito automaticamente nenhum outro comando é necessário, mas neste caso é preciso tomar uma dos 3 caminhos:
- Resolver manualmente o conflito, executar o "git add ." e executar o comando "git rebase --continue"
- Ignorar o conflito e deixar o path para traz executando o comando "git rebase --skip"
- Efetuar o check out do branch original e parar o processo de rebase com o comando "git rebase --abort"