Проверьте git reflog
и найдите свой коммит.
Самое безопасное - создать ветку при «потерянном» коммите, а затем проверить, все ли в порядке, используя gitk
или git log -p
git branch recovery HEAD@{1} # use whatever commit you need
git log -p recovery
Эта новая ветвь затем может быть объединена, перебазирована поверх мастера, зафиксирована в вишне и т. Д. В git есть много возможностей выстрелить себе в ногу, но также есть еще несколько способов повторно прикрепить эту ногу ( возможно, к вашим рукам).
Если вы не сделали никаких новых коммитов на мастере, вы можете просто объединить рассматриваемый коммит, который будет решен как ускоренное слияние с помощью git:
git merge HEAD@{1} # use whatever commit you need
Если вам не нужны какие-либо новые коммиты на master, и вы просто хотите сбросить ветку master на этот потерянный коммит, используйте git reset. Чтобы не потерять какие-либо изменения, сначала сохраните изменения в своей рабочей копии (git stash save
)
git reset --keep HEAD@{1}
В следующий раз, когда вы обнаружите, что не находитесь ни в одной ветке, используйте git branch newbranch
или git checkout -b newbranch