Acho que trabalhar com repo é tão difícil quanto trabalhar com o código-fonte do Android. Ou seja, enfrentou muitos problemas ao trabalhar com diferentes versões do código-fonte do Android. Então, procurei por ajuda do comando repo, mas não encontrei muita ajuda. Então, experimentei um pouco e descobri uma boa maneira de trocar de branch.
Comando git reset para remover as mudanças que você fez
$ repo forall -c git reset --hard
em seguida, inicialize o repo com novo branch. Suponha que você tenha verificado a versão 4.0.4 r1.2 e deseja reverter para 4.0.1 r1 (que era o meu caso na verdade) então
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
Repo de sincronização
$ repo sync
É aplicável para todas as combinações
e a mágica acontece.