Очистка истории мерзавцев с BFG
Поскольку я недавно пытался выдвинуть свои коммиты на github, я получил то же сообщение об ошибке, что и в этом вопросе. Я удалил файлы из своего хранилища, но теперь должен очистить историю. Как советовали в ответах, я изучил BFG, который, кажется, является решением. При чтении инструкции начинается с git --mirror link-to-remote-repo
,
Теперь я задаюсь вопросом, потому что я еще не смог выдвинуть самый новый коммит, и, вероятно, моя локальная история коммитов длиннее, чем на github. Более того, я не уверен, так как вся работа, которую я делал, была над веткой, а не над мастером, и как это влияет на мой репозиторий.
1 ответ
Ручное решение (на основе cheery pick
)
РЕДАКТИРОВАТЬ: Перед началом, пожалуйста, зафиксируйте или сохраните ваши локальные изменения.
Допустим, у нас есть две ветви master
а также dev
которые имеют общий коммит с SHA1 = X. Branch dev
содержит коммиты A1, A2, ..., A16
git checkout dev
git checkout -b new-dev
git reset --hard X
За каждый коммит в dev
(A1, ..., A16):
git cherry-pick A1 --no-commit
- Проверьте свой индекс с
git status
- Удалите проблемные двоичные файлы из индекса
git reset HEAD myfolder/mybinary.rpm
- удалить файл
git rm myfolder/mybinary.rpm