← До фільтрів та технологій

← До списку лабораторних по Git

Git Лабораторна 52: Перезапис історії для видалення конфіденційних даних

Технологія: Git

Номер лабораторної: 52 · Рівень: middle

Тема: Прибирання секретів з історії через filter-repo

Повний опис / сценарій лабораторної:

Мета: зрозуміти як видалити секретний файл або рядок з усієї історії репозиторію.



Крок 1. Усвідомити ризики випадкового внесення секретів у репозиторій.

Пояснення: наприклад ключі доступу або паролі у конфігураційних файлах.



Крок 2. Встановити інструмент git filter-repo якщо він ще не встановлений.

Пояснення: у багатьох дистрибутивах він доступний як окремий пакет.



Крок 3. Створити резервну копію репозиторію для тесту.

Команда: cd ~ && cp -r git_lab1 git_lab1_filter_backup



Крок 4. Перейти у тестову копію.

Команда: cd git_lab1_filter_backup



Крок 5. Припустити що файл secret.txt не повинен був потрапити в історію.

Пояснення: у реальній ситуації можна створити такий файл спеціально для лабораторії.



Крок 6. Запустити filter-repo для повного видалення цього файла з історії.

Команда: git filter-repo --path secret.txt --invert-paths

Пояснення: після цього файл і всі його версії зникнуть з історії.



Крок 7. Перевірити історію та впевнитися що secret.txt більше не згадується.

Команда: git log --stat | grep secret.txt || echo "secret.txt не знайдено у історії"



Крок 8. Оцінити вплив на хеші комітів.

Пояснення: усі хеші змінилися, тому знадобиться форсований push.



Крок 9. Уявити план комунікації з командою перед переписуванням історії на production репозиторії.

Пояснення: потрібно попередити усіх і узгодити дії з перехідним вікном.



Крок 10. Міні звіт.

Завдання: опишіть покроково що робити після переписування історії на сервері, щоб розробники синхронізували свої локальні клони без втрати роботи.