Volta/desfaz um merge e delea os arquivos adicionados
git reset HEAD~1 --hard
Merge com Squash junta todos os comits e cria um único comit com as mudanças. Isso é bom para não poluir a master e ter um ponto de referência ao realizar esse merge. Fácil reversão
git merge feature/x --squash
Merge com reabase junta os comits entre o comit mais antigo e o mais novo. Não recomendado usar para merge para master pois pode bagunçar bastante o código. Use sempre o inverso quando precisar mergar a master com o branch.
git rebase feature/x
Voltar um estado anterior de um comit em um arquivo específico
git checkout <hash-comit> <nome_arquivo>