Как удалить ненужный git коммит?

У меня есть мусорные коммиты в моем репозитории git. Они были созданы, например, git gui при изменении последнего фиксации снова и при непреднамеренном создании дополнительных коммитов.

Теперь у меня есть некоторые коммиты, лежащие без назначенного HEAD (отсоединенные, а не часть любой ветки).

Как я хочу убрать, мой вопрос: как я могу удалить эти коммиты (см. F, G и H)? Это делается с помощью rebase или revert или reset? Или с помощью другого инструмента? На какой фиксации я должен сидеть, чтобы сделать это?

A -- B -- C -- D -- E [master]
      \-- F -- G
           \-- H

Спасибо

Christian

Ответ 1

Попробуйте следующее:

git reflog expire --expire=now
git gc --prune=now

Ответ 2

Сделайте следующее:

git config gc.reflogexpireUnreachable = now
git gc --prune=now
git config gc.reflogexpireUnreachable = 3 days