Ответ 1
tarsius написал в ответе на другой вопрос:
git reflog expire --expire=now --all git gc --prune=now
который очищает reflog, а затем очищает репозиторий. Очистка reflog сначала не всегда работает, потому что значения, зафиксированные с помощью reflog, сохраняются в режиме git-gc
до тех пор, пока reflog не истечет (это по умолчанию 90 дней).
После этого все оборванные коммиты действительно исчезли, насколько я понял. Поэтому нужно быть уверенным, что им действительно больше не нужны все. Если кто-то действительно хочет сохранить некоторые из оборванных коммитов, можно:
git checkout <dangling_commit_id>
git branch <new_branch_name_of_your_choice>
или используйте git format-patch, чтобы сохранить всю фиксацию в текстовом файле.