Случилось, что запушились лишние папки в Github, решаем задачу:
Чтобы полностью перезаписать историю в удалённом репозитории на GitHub (привести его в точное соответствие с вашим локальным состоянием), выполните следующие шаги:
1. Сначала приведите локальный репозиторий к нужному состоянию
Убедитесь, что у вас:
- Нет незакоммиченных изменений (если они есть — закоммитьте или сбросьте)
- Локальная ветка содержит ровно ту историю, которую вы хотите видеть на GitHub
2. Принудительно перезапишите историю на GitHub
git push --force origin имя_ветки
Например, для ветки main
:
git push --force origin main
3. Безопасная альтернатива (рекомендуется для командной работы)
git push --force-with-lease origin имя_ветки
Эта команда предотвратит случайную перезапись чужих коммитов.
Что происходит:
--force
полностью заменяет удалённую ветку вашей локальной версией- Все коммиты, существовавшие на GitHub, но отсутствующие локально, будут безвозвратно удалены
- История GitHub станет идентичной вашей локальной истории
Пример полного рабочего процесса:
# Переключиться на нужную ветку (например, main)
git checkout main
# Локально сбросить ветку к нужному коммиту (например, на 2 коммита назад)
git reset --hard HEAD~2
# Принудительно синхронизировать GitHub с локальным состоянием
git push --force origin main
Важные предупреждения:
- ⚠️ Это опасная операция!
Вы безвозвратно удалите всё, что было на GitHub после вашего локального HEAD. - Если с репозиторием работают другие люди:
- Предупредите команду перед форс-пушем
- После вашего
--force
другим разработчикам потребуется выполнить:bash git fetch --all git reset --hard origin/main # замените main на имя вашей ветки
- Для публичных репозиториев используйте
git revert
вместо форс-пуша.
Если нужно удалить файлы из истории .gitignore
Добавьте этот шаг перед форс-пушем:
# Удалить кэш индекса
git rm -r --cached .
# Переиндексировать файлы с учётом .gitignore
git add .
# Создать коммит с исправлениями
git commit -m "Cleanup .gitignore"
# Теперь можно пушить с --force
git push --force origin main
Добавить комментарий