Вы можете увидеть висячие коммиты с git log -g
.
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
Таким образом, вы можете сделать это, чтобы найти определенную строку в сообщении коммита, которое висит:
git log -g --grep=search_for_this
В качестве альтернативы, если вы хотите найти изменения для определенной строки, вы можете использовать опцию поиска кирки "-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)
В Git 1.7.4 добавится опция -G , позволяющая передать -G , чтобы найти, когда была перемещена строка, содержащая , что -S не может сделать. -S сообщит вам только об изменении общего количества строк, содержащих строку (т.е. добавление / удаление строки).
Наконец, вы можете использовать gitk для визуализации висячих коммитов:
gitk --all $(git log -g --pretty=format:%h)
А затем используйте его функции поиска для поиска неуместного файла. Вся эта работа при условии, что отсутствующий коммит не "просрочен" и не был собран сборщиком мусора, что может произойти, если оно свисает в течение 30 дней и у вас истекают reflogs или запускается команда, которая их истекает.