2010-08-31 2 views
2

Я пытался очень трудно удалить файл с конфиденциальными данными из моего репозитория мерзавца, используя эту замечательную страницу (среди прочих): http://help.github.com/removing-sensitive-data/Как удалить файл из git с помощью ветви фильтра, чтобы я не мог по-прежнему git grep содержимое?

линия первичности:

git filter-branch --index-filter 'git rm --cached \ 
    --ignore-unmatch FileWithSecrets.java' HEAD 

Однако, даже если Я следую инструкциям, включая обрезку и сборку мусора объектов. Тот факт, что я переписал историю, кажется, не полностью удаляет файл.

Суть в том, я до сих пор можно найти содержимое файла с помощью Git Grep: мерзавец Grep $ (мерзавец преподобным список --all)

.... и это все еще показывает вверх.

Я пропустил что-то очевидное или неочевидное? Почему я могу по-прежнему «git grep» содержимое?

Я вижу, что файл больше не находится в наборе изменений, когда я делаю «git show» коммита, где он был добавлен. Но даже в этом случае я все еще могу это сделать - как будто он был удален из истории ветвей, но все еще плавает там?

Git это весело, здорово и удивительно, но на самом деле может поколебать свою уверенность в себе :)

спасибо !! Brendan

ответ

3

Я не пробовал это, но так как последний аргумент мерзавец фильтр ветвь определяется как [--] [<rev-list options>...] и вы получаете секретную информацию от оборотов в git rev-list --all, это должно работать:

git filter-branch --index-filter 'git rm --cached \ 
--ignore-unmatch FileWithSecrets.java' -- --all 
             ^^^^^^^^ 
+0

Yup, предоставляя HEAD в качестве аргумента, как OP, означает, что только HEAD переписана - даже не указана ветка HEAD! – Cascabel

+0

Большое спасибо за ответы - указав ошибку HEAD и аргумент - all. Я попробовал новую команду + cleanup и все еще не удалял файл из результатов git grep. Мне интересно, может ли проблема иметь какое-то отношение к тому факту, что я пометил несколько коммитов с помощью «git tag», и они рассматриваются как отдельные ветви. Я попытался проверить каждый из них отдельно и запустить вышеупомянутую ветвь фильтра, но я все еще могу grep «секретную строку». Я попытался посмотреть, могу ли я воспроизвести с помощью простого репо, но команды работают. – Brendan

+0

@Brendan http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html#_checklist_for_shrinking_a_repository подразумевает, что вы должны добавить '-tag-name-filter cat' в фильтр -страницы. –

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

  • Нет связанных вопросов^_^