2016-01-17 2 views
2

У меня есть локальный проект, над которым я работал некоторое время. В этом проекте есть некоторые данные конфигурации, содержащие пароли. Теперь я хочу сделать этот проект общедоступным в Github и хочу разделить данные конфигурации, а не проверять конфиденциальные данные, как я должен был сделать с самого начала. Однако даже если это сделать в HEAD, данные все еще доступны в истории коммитов.Удалить конфиденциальные данные конфигурации из истории фиксации

Есть ли способ решить эту проблему или мне нужно удалить все старые фиксации и использовать только последнее чистое коммит в публичном репо?

Между доступными опциями, которые являются самыми идематическими?

ответ

3

Есть отличная функция Git под названием filter-branch. Это позволяет вам воссоздать историю Git, применяя команду на каждом шаге. В этом случае, вы будете использовать его для удаления чувствительного файла:

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch my/sensitive/file' HEAD 

Стоит отметить, что, как и всю такой Гит магией, вновь переписана ветвь будет иметь другое «генеалогическое дерево» в оригинал, так вы не сможете сливаться взад и вперед. Другими словами, любой, кто работал над исходным репо, должен будет получить новую ветку, прежде чем совершать какие-либо работы.

1

git filter-branch является хорошим решением,

Но bfg-repo-cleaner гораздо быстрее, чем решение git filter-branch

enter image description here

Смежные вопросы