Вы можете увидеть висячие коммиты с 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 <regexp>, чтобы найти, когда была перемещена строка, содержащая <regexp>, что -S не может сделать. -S сообщит вам только об изменении общего числа строк, содержащих строку (т.е. добавление / удаление строки).
Наконец, вы можете использовать gitk для визуализации висячих коммитов:
gitk --all $(git log -g --pretty=format:%h)
А затем используйте его функции поиска, чтобы найти неуместный файл. Вся эта работа при условии, что отсутствующий коммит не «просрочен» и не был собран сборщиком мусора, что может произойти, если оно свисает в течение 30 дней и у вас истекают reflogs или запускается команда, срок действия которой истекает.