У меня есть git-репозиторий, содержащий файлы, в которых есть некоторые конфиденциальные данные, возможно, жестко закодированные или формально жестко закодированные и в настоящее время находящиеся в некоторых точках истории git.
В целях обеспечения доступности проекта для общественности, чтобы программисты моглисхожие интересы могут принести пользу от него и внести изменения обратно, я хочу его обработать и очистить оскорбительные файлы.
Процедура, которую я рассмотрел, была следующей:
- Мелкий / Общий клонрепо локально в новое локальное местоположение, эта папка станет общедоступным вариантом.Последующие шаги выполняются в новом репо.
- Разветвите мастер в ветку
public-master
- Удалите все другие ссылки на ветки.
- Очистите
public-master
- Squash
public-master
git reflog expire --expire-unreachable=now --all && git gc --prune=all --agressive
удалить все недоступные ссылки, которые теперь являются любыми объектами, не находящимися в публичной ветке git push
добавить общедоступный мастер обратно в частный репозиторий. - Установить исходный удаленный доступ к общедоступному URL репозитория, перейти на
master
.Push to origin.
Достаточно ли этого для очистки моего репо или можно ли восстановить конфиденциальные данные после этого.Есть ли более разумный и распространенный способ решения этой проблемы?Являются ли какие-либо шаги посторонними?
Например, могу ли я сделать все это в одном репозитории, или природа git-пакетов означает, что я все еще могу нажать obj
, который содержит конфиденциальную информацию?