Você pode ver confirmações pendentes com git log -g
.
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
Portanto, você pode fazer isso para encontrar uma sequência específica em uma mensagem de confirmação que está pendente:
git log -g --grep=search_for_this
Como alternativa, se você deseja pesquisar as alterações para uma sequência específica, pode usar a opção de pesquisa de picareta "-S":
git log -g -Ssearch_for_this
# this also works but may be slower, it only shows text-added results
git grep search_for_this $(git log -g --pretty=format:%h)
O Git 1.7.4 adicionará a opção -G , permitindo que você passe -G <regexp> para descobrir quando uma linha que contém <regexp> foi movida, o que -S não pode fazer. -S informa apenas quando o número total de linhas que contêm a sequência foi alterado (ou seja, adicionando / removendo a sequência).
Por fim, você pode usar o gitk para visualizar os commits dangling com:
gitk --all $(git log -g --pretty=format:%h)
E, em seguida, use seus recursos de pesquisa para procurar o arquivo extraviado. Todo esse trabalho, assumindo que a confirmação ausente não "expirou" e foi coletado como lixo, o que pode ocorrer se ficar pendurado por 30 dias e você expirar os reflogs ou executar um comando que os expire.