Я думаю, вы должны рассмотреть другую стратегию развития, чтобы предотвратить подобные проблемы. Мне кажется, что лучше всего работает никогда не заниматься разработкой непосредственно в моей основной ветке. Независимо от изменений, которые я делаю, я всегда создаю новую ветку для нового кода:
git checkout -b topic/topic_name master
Оттуда я могу выложить изменения в общедоступные репозитории:
git push pu topic/topic_name
или, в конце концов, просто объедините его с моей основной веткой:
git checkout master && git merge topic/topic_name
Если вам действительно нужно вернуться к более старому моменту времени и установить его в качестве своего мастера, вы можете переименовать текущую ветку в другое, а затем выбрать более старую версию, чтобы стать вашим мастером:
git branch -m master junk
git co -b master old_sha1_value