Если X3 является родительским коммитом Y1, вы не должны его потерять:
A git log
должен по-прежнему иметь возможность перечислять X3 и X2 как предков Y1.
Если нет, то, как прокомментировано, вы можете отменить reset --hard
с помощью git reset --hard HEAD@{1}