Приватная предыстория разработки в публичном репозитории
t.me/oficsu_blog/21Задача: нужно заопенсорсить локально разрабатываемый проект
Препятствие: локальная история содержит грязь, да и вообще потенциально опасные вещи вроде приватных ключей, которые затруднительно выискивать в истории, чтобы подчистить
Очевидное решение? Сквошим все коммиты в один, например так: git reset "$(git commit-tree "HEAD^{tree}" -m "initial commit")". Затем пушим результат в новый публичный репозиторий, забываем старую историю как страшный сон, и продолжаем вести разработку, отсчитывая историю уже с нового коммита
Проблема: а что если мы не хотим забывать старую историю? Что, если нам всё ещё полезна полная история разработки, и мы иногда хотим локально заглядывать в git blame или git log -p (но ни в коем случае не пушить)? Неужели придётся каждый раз обращаться к старой ветке явно, чтобы посмотреть, что было до нашего релиза в публичную репу? Или вообще ребейзить её? Куча скучной нудной унылой повторяющейся работы каждый раз?
Менее очевидное решение.…