Как я перестал бояться опенсорсить свои поделки
для тех, кто пишет код в VS Code, не помнит наизусть флаги git filter-repo и считает, что IDE — нормально. Если ты из лагеря «настоящие программисты сидят в vim и пишут всё в Makefile» — просто пролистайgit-private2public как .gitignore, но чтобы сделать зеркало приватного репо одной git push.
Что это
CLI-тулза. Держит два репо в синхроне: приватный (ваш рабочий бардак) и публичный (чистая версия). При пуше автоматически вычищает секреты и обновляет публичный mirror.
Конфиг — папка .gitpublic/, как .gitignore. По одной маске на строку, без YAML.
.gitpublic/ config — source / target / push ignore — что НЕ публиковать replace — что заменить (==> без кавычек) scan — что не должно попасть, иначе падаем allow — но конкретно эти можно пропускать в пуш,
Файла нет → настройки нет. Просто.
Автопуш через git hook
pip install git-private2public cd ~/my-private-repo git-private2public init
init создаёт пять пустых файлов с закомментированными примерами. Дальше правите то, что нужно:
Easy — только ignore:
.env secrets/ *.key credentials.json
Medium — добавляете replace:
10.0.0.5 ==> 203.0.113.5 real-token-here ==> ***
Hard — добавляете scan (защита от факапов):
# scan regex:github_pat_[A-Za-z0-9_]{30,} regex:192\.168\.
Если в коде найдётся паттерн из scan — publish падает, ничего не пушится.
git-private2public scan # dry-run git-private2public publish # реальный пуш
Автопуш через git hook
Это та фича, ради которой я и начал. Никакого CI, никаких GitHub Actions.
git-private2public hook enable
Ставит pre-push хук. Теперь обычный git push — отправляет в приватный репо и автоматически чистит-пушит в публичный mirror.
git-private2public hook status # проверить git-private2public hook disable # выключить
Работает офлайн, на любом хостинге.
Почему не git filter-repo или BFG
Я ими пользовался. Они мощнее, но мне нужны были четыре вещи в одной тулзе:

Не нашёл — написал.
Установка (ещё раз, коротко)
pip install git-private2public
Если pip не вариант — single-file: скачал git_private2public.py, chmod +x, готово (нужны git-filter-repo и pyyaml).
Ссылки
MIT, форкайте, шлите PR
README на русском:
README.ru.md
TL;DR
pip install git-private2public → init → редактируешь .gitpublic/ignore → publish. Если хочешь автопуш — hook enable.git push. Всё.
