0Pricing
Git & GitHub Professional Workflow · Урок

Перезапись истории с помощью git filter-repo

Узнайте, как массово переписывать историю репозитория, удаляя большие файлы или конфиденциальные данные с помощью git filter-repo.

«Перезапись истории с помощью git filter-repo» — бесплатный урок Git & GitHub Professional Workflow на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Git & GitHub Professional Workflow, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Git & GitHub Professional Workflow содержит 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) и разблокировать остальной курс Git & GitHub Professional Workflow, подпишись на CoddyKit PRO. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.

Чему я научусь в уроке «Перезапись истории с помощью git filter-repo»?

Узнайте, как массово переписывать историю репозитория, удаляя большие файлы или конфиденциальные данные с помощью git filter-repo. Ты практикуешь Git & GitHub Professional Workflow с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Git & GitHub Professional Workflow?

Предыдущий опыт не требуется. Git & GitHub Professional Workflow на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Перезапись истории с помощью git filter-repo»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Git & GitHub Professional Workflow?

Да. Каждый урок Git & GitHub Professional Workflow включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Git Reflog и восстановление истории
  2. Git Bisect для отладки
  3. Обслуживание и очистка репозитория
  4. Перезапись истории с помощью git filter-repo
← Назад к Git & GitHub Professional Workflow