Recentemente, tive esse problema novamente. Já faz um tempo desde que eu trabalhei com submódulos pela última vez e depois de aprender mais sobre o git, percebi que basta verificar o ramo em que você deseja se comprometer. O Git manterá a árvore de trabalho, mesmo que você não a esconda.
git checkout existing_branch_name
Se você deseja trabalhar em uma nova ramificação, isso deve funcionar para você:
git checkout -b new_branch_name
O checkout falhará se você tiver conflitos na árvore de trabalho, mas isso deve ser bastante incomum e, se isso acontecer, você pode apenas escondê-lo, soltá-lo e resolvê-lo.
Comparada à resposta aceita, essa resposta poupará a execução de dois comandos, que não levam muito tempo para serem executados. Portanto, não aceitarei essa resposta, a menos que milagrosamente receba mais votos (ou pelo menos perto) do que a resposta atualmente aceita.