Удалить файл из истории

GitGitBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Git - это популярная система контроля версий, которая позволяет разработчикам отслеживать изменения в их кодовой базе. Однако, иногда возникает необходимость полностью удалить файл из истории репозитория. В этом лабе мы проведем вас через процесс очистки файла из истории Git.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 94%. Он получил 90% положительных отзывов от учащихся.

Удалить файл из истории

Предположим, вы случайно зафиксировали в своем репозитории Git файл, содержащий конфиденциальную информацию, такую как API-ключи или пароли. Вы понимаете, что этот файл никогда не должен был быть зафиксирован, и хотите полностью удалить его из истории репозитория. Однако просто удалить файл и зафиксировать изменения не удалит его из истории репозитория. Файл по-прежнему будет доступен в предыдущих коммитах, что может представлять риск безопасности.

Для завершения этого лабара вы будете использовать репозиторий Git git-playground из вашего аккаунта на GitHub, который является форком репозитория https://github.com/labex-labs/git-playground.git. В этом репозитории есть файл с именем file1.txt, который никогда не должен был быть зафиксирован. Чтобы удалить file1.txt из истории репозитория, следуйте шагам:

  1. Склонюйте репозиторий на свою локальную машину:
git clone https://github.com/your-username/git-playground
  1. Используйте следующие команды, чтобы перейти в директорию и настроить идентификацию:
cd git-playground
git config --global user.name "your-username"
git config --global user.email "your-email"
  1. Удалите файл из индекса репозитория.
git rm --cached --ignore-unmatch file1.txt
  1. Зафиксируйте это изменение с комментарием к коммиту "Удалить конфиденциальный файл file1.txt":
git commit -m "Remove sensitive file1.txt"
  1. Перезапишите историю репозитория, удалив все вхождения file1.txt:
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch file1.txt" --prune-empty --tag-name-filter cat -- --all
  1. Принудительно отправьте изменения на удаленный репозиторий:
git push origin --force --all

После завершения этих шагов file1.txt будет полностью удален из истории репозитория, и после выполнения git log --remotes вы не увидите коммит по file1.txt.

Резюме

Удаление файла из истории Git - это необходимый шаг, когда конфиденциальная информация была случайно зафиксирована. В этом лабе мы провели вас через процесс удаления файла из истории Git с использованием команды git filter-branch. Помните, будьте осторожны при перезаписи истории репозитория, так как это может привести к непредвиденным последствиям.