2015-04-20 3 views
13

Я нажал файл с паролем на свое репо по ошибке - FYI репо - это всего лишь небольшой персональный проект.Как правильно удалить конфиденциальные данные, нажатые на репозиторий Git?

Как только я понял, что пароль присутствует, я добавил файл в .gitignore и выполнил git rm -r --cached <filename>, совершил и отправил на репо.

Теперь я понимаю, что пароль по-прежнему присутствует в истории - что это лучший способ его удалить?

Я прочитал на странице Github страницу Remove sensitive data, в которой предлагается изменить пароль, который я сделал, - но мне также хотелось бы удалить историю.

+3

Возможный дубликат [Удалить конфиденциальные файлы и их данные из истории Git] (http://stackoverflow.com/questions/872565/remove-sensitive-files-and-their-commits-from-git-history) – AD7six

+0

Как многие коммиты уже прошли поверх пароля в вашем пульте? –

+0

У меня есть 5 коммитов после тех, которые содержат пароль – NRKirby

ответ

24

Поскольку вы уже сделали 5 коммитов с момента фиксации, содержащей пароль с четким текстом, лучше всего сделать git rebase -i в интерактивном режиме в вашем местном филиале. Найти SHA-1 коммита, где вы добавили пароль открытым текстом, и введите следующую команду:

git rebase --interactive dba507c^ 

где dba507c первые 7 символов SHA-1 для плохой фиксации.

Изменить это:

pick dba507c comment for commit containing clear text password 

Для этого:

edit dba507c I have removed the clear text password 

Внесите изменения в файл паролей, чтобы удалить четкий текст, а затем совершить свой результат, как это:

git commit --all --amend --no-edit 
git rebase --continue 

Завершите перезагрузку, затем нажмите на свою (правильную) локальную ветвь на пульте дистанционного управления через:

git push -f origin your_branch 

Вам нужно будет нажать push your_branch, потому что вы переписали историю (путем изменения файла пароля). Теперь у вас есть все ваши последние коммиты, но вы удалили чистый текст.

+0

Спасибо за это, он отлично сработал – NRKirby

+1

Для дальнейшего использования, если вы поймали четкую фиксацию текста перед тем, как сделать какие-либо другие на своем пульте, вы могли бы установить его с помощью однострочного решения. –

9

Если бы это был предыдущий commmit, а затем удалить пароль из файла и запустить

git add file_with_pwd 
git commit --amend 
git push -f origin master 

Примечание: После того, как вы писали, что здесь на Stackoverflow, многие ребята могут уже клонировали репозиторий (у вас есть то же самое имя пользователя в github и только один репозиторий). Изменить пароль!

+1

Upvote для сбора этой дыры в безопасности (я не клонировал это репо FYI). –

+1

Я сделал, но я не буду ** наносить вред OP в любом случае. Я сделал это просто, чтобы показать ему, что ему нужно изменить пароль, поскольку другие ребята, вероятно, не скажут ему об этом. – hek2mgl

+1

'страница на Github, которая предлагает изменить пароль, который я сделал, - может быть полезен будущим читателям, а не OP. – AD7six

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