Другой способ войти в состояние git - это попытаться зафиксировать удаленную ветку. Что-то вроде:
git fetch
git checkout origin/foo
vi bar
git commit -a -m 'changed bar'
Обратите внимание, что если вы сделаете это, любая дальнейшая попытка извлечения origin / foo вернет вас обратно в состояние отсоединенной головы!
Решение состоит в том, чтобы создать собственную локальную ветку foo, которая отслеживает origin / foo, а затем при необходимости нажать.
Это, вероятно, не имеет ничего общего с вашей первоначальной проблемой, но эта страница содержит множество посещений Google для "git detached head", и этот сценарий недостаточно документирован.