Если фиксация возможна из некоторой ссылки, оптимальным решением будет поиск кирки: git log -Sstring --all
.
Если это недостижимо, вы правы, вам придется немного покопаться. Если вы думаете, что повсюду разбросаны коммиты, проще всего использовать git fsck --lost-found
, чтобы найти свои коммиты. (Он также будет печатать висячие капли.) Затем вы можете использовать git grep <commit>
на каждом из этих SHA1 и найти свою строку.
С другой стороны, если вы думаете, что у вас есть несколько веток-кандидатов, которые были сокращены, и ваша цель будет на одном из них, я бы использовал git reflog show
, чтобы оглянуться назад на ваши reflogs, найти коммиты, которые были на кончиках их, и воссоздайте их, чтобы вы могли сделать git log -Sstring <branches> ^master
.