Перезапись истории с помощью git filter-repo
Узнайте, как массово переписывать историю репозитория, удаляя большие файлы или конфиденциальные данные с помощью git filter-repo.
«Перезапись истории с помощью git filter-repo» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем переписывать историю
Иногда необходимо переписать всю историю репозитория: удалить утёкший пароль, убрать случайно зафиксированные огромные файлы или исправить адреса электронной почты авторов во всех коммитах.
Знакомство с git filter-repo
git filter-repo — современный быстрый инструмент для переписывания истории. Он заменяет старый и медленный git filter-branch.
Установка инструмента
Это отдельная программа, которую часто устанавливают через pip или менеджер пакетов.
pip install git-filter-repoВсегда работайте с клоном
Переписывание истории разрушительно. Работайте со свежим клоном, чтобы выбросить его, если что-то пойдёт не так.
git clone --mirror git@github.com:you/repo.gitУдаление файла из истории
Чтобы удалить файл из каждого коммита, используйте параметры --path и --invert-paths.
git filter-repo --path secrets.env --invert-pathsУдаление крупных объектов
Можно удалить файлы, превышающие заданный пороговый размер, чтобы уменьшить раздутый репозиторий.
git filter-repo --strip-blobs-bigger-than 10MПереписывание адресов авторов
Исправьте неверный адрес электронной почты автора во всех коммитах с помощью сопоставления адресов или обратного вызова.
git filter-repo --mailmap my-mailmap.txtЗамена текста в истории
Удалите секретные строки везде, где они встречаются, с помощью файла выражений.
git filter-repo --replace-text expressions.txtХеши коммитов изменяются
Переписывание истории создаёт новые хеши коммитов для всех затронутых объектов. История репозитория расходится с любыми старыми копиями.
Принудительная отправка результата
После переписывания необходимо принудительно отправить изменения, поскольку история на удалённом репозитории больше не совпадает с локальной.
git push --force --allСогласование действий с командой
Поскольку клоны всех участников теперь устарели, им нужно заново клонировать репозиторий. Сообщите о переписывании, чтобы избежать возврата удалённых данных.
Быстрая проверка
Проверьте, насколько хорошо вы поняли переписывание истории.
Итоги
Вы научились переписывать историю:
git filter-repoзаменяет filter-branch- Удаляйте файлы, крупные объекты или секретный текст из всей истории
- Всегда работайте с клоном; хеши коммитов изменяются
- После этого принудительно отправьте изменения и попросите команду заново клонировать репозиторий
Часто задаваемые вопросы
Урок «Перезапись истории с помощью git filter-repo» бесплатный?
Да — полный текст урока «Перезапись истории с помощью git filter-repo» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Перезапись истории с помощью git filter-repo»?
Узнайте, как массово переписывать историю репозитория, удаляя большие файлы или конфиденциальные данные с помощью git filter-repo. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Перезапись истории с помощью git filter-repo»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Git Reflog и восстановление истории
- Git Bisect для отладки
- Обслуживание и очистка репозитория
- Перезапись истории с помощью git filter-repo