DevGang
Авторизоваться

Удаление конфиденциальных данных из истории Git с помощью BFG 

Вот как удалить конфиденциальные данные, такие как файлы сертификатов или пароли в ваших файлах, из репозитория git и истории с помощью BFG Repo-Cleaner.

1. Удалите важные файлы и секреты из своего кода и зафиксируйте изменения.

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

2. Установите BFG

Вы можете скачать JAR с сайта. Если вы используете Mac, можно выполнить команду brew install bfg.

3. Клонируйте новую копию вашего репо, используя флаг --mirror:

# Example
$ git clone --mirror git://example.com/my-repo.git

4. Очистите конфиденциальные файлы.

Используйте --delete-files для уничтожения файлов в истории репо.

# Examples
$ bfg --delete-files certificate.p12 my-repo.git
$ bfg --delete-files keystore.jks my-repo.git
$ bfg --delete-files id_{dsa,rsa} my-repo.git
$ bfg --delete-files *.{txt,log} my-repo.git

Обратите внимание, что указанное имя соответствует имени файла, а не пути в репо. Так что $ bfg --delete-files path/to/certificate.p12 my-repo.git работать не будет.

5. Очистите чувствительные строки.

Используйте --replace-text для очистки строк из истории репо. По умолчанию каждая строка будет переписана как «*** REMOVED ***». Это двухэтапный процесс.

5.1 Создайте файл с новой строкой для каждой строки, которую вы хотите удалить

Создайте простой текстовый файл, как хотите.

# Example
echo "password123" >> passwords.txt
echo "123password" >> passwords.txt

5.2 Запустите команду

Запустите bfg --replace-text ссылку на только что созданный файл.

# Example
$ bfg --replace-text passwords.txt my-repo.git

6. Взгляните на свою новую историю.

Войдите в папку репозитория git и убедитесь, что ваша история обновлена.

# Example
$ cd my-repo.git

# Use git commands to examine the history
$ git log
$ git show HEAD
$ git show HEAD~1
$ git show d89bb58

(Вы не увидите физические файлы своего рабочего дерева, если перечислите файлы в этом каталоге, поскольку мы сделали голый / зеркальный клон, на случай, если вам интересно.)

7. Удалите ненужные грязные данные.

После того, как вы будете удовлетворены состоянием истории, очистите эти конфиденциальные файлы.

$ git reflog expire --expire=now --all && git gc --prune=now --aggressive

8. Отправьте изменения

Наконец, как только вы будете довольны обновленным состоянием вашего репо, верните его обратно, и все готово!

$ git push

Если вы работаете в команде, попросите всех отказаться от своих старых копий репозитория и сделать новые клоны.

#Git
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В подарок 100$ на счет при регистрации

Получить