La instrucción correcta es checkout, así:
Es decir, si tengo el hash de un commit af78e6a solo hay que especificarlo sin más:
Lo que si no puedes evitar es que te borre archivos o así, debes entender que al cambiar a un punto atrás en el historial del proyecto es evidente que los archivos mas recientes no estarán presentes.
Vamos, que Git no los borra por que se le da la gana, solo trata de volver a un estado anterior de tu repositorio, y en dicho estado no existían aún dichos cambios más recientes.
Si lo que quieres hacer es, como dices, integrar los cambios del último commit pero volviendo al primero entonces debes hacer cherry-pick después de haber hecho el checkout, con reflog puedes seguir navegando por el historial para verificar y obtener los respectivos hashes.
Algo así:
Cita: git checkout c3
git checkout -b c3_backup
git reset --hard c1
git cherry-pick c3
Que sería básicamente: crear sobre una copia del commit3, resetear el repositorio hasta el commit1, integrar los cambios de commit3 en la copia del commit1.
Ya después de eso, y si todo sale bien entonces ya puedes integrar el branch como gustes.