TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #185 1.06K
Очистка репозитория от важных данных

Если случайно закоммитили пароли, токены или большие файлы, просто удалить их из последнего коммита недостаточно - они останутся в истории Git. Сегодня про то, как удалить следы своего косяка 🤒

Разберём два способа очистки истории репозитория:
1️⃣ git filter-branch – старый и медленный метод
2️⃣ BFG Repo-Cleaner – более современный и быстрый

🚮 Удаление данных с помощью git filter-branch

1️⃣ Удалить все следы файла config.yml из истории:


git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch config.yml" \
--prune-empty --tag-name-filter cat -- --all


2️⃣ Заменить текстовый секрет во всех коммитах:


git filter-branch --tree-filter \
'find . -type f -exec sed -i "s/OLD_SECRET/REDACTED/g" {} +' -- --all


❌ Минусы:

Очень медленно на больших репозиториях
Требует много оперативной памяти
Ошибки могут сломать историю

🚮 Используем BFG Repo-Cleaner (рекомендуемый способ)

1️⃣ Установите BFG:


wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar


2️⃣ Удалить файл config.yml из всех коммитов:


java -jar bfg-1.14.0.jar --delete-files config.yml


3️⃣ Очистить репозиторий от всех данных с API_KEY


java -jar bfg-1.14.0.jar --replace-text banned.txt


Файл banned.txt должен содержать список слов, которые нужно удалить.

▪️ Очистить файлы больше 50MB:


java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 50M


4️⃣ Финальная зачистка и переписывание истории:


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


⤵️ Плюсы BFG:

В разы быстрее, чем filter-branch
Упрощённый синтаксис
Безопаснее для истории

BashTex 📱 #utils
  • 👍 6
More from @bash_tex
  1. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  2. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  3. Oct 9, 2026BashTex 📱 #мем
  4. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  5. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  6. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →