Удалить часть содержимого файла из истории git

Когда репозиторий был настроен, в начальном коммите один из добавленных файлов содержал конфиденциальные данные (личные данные программиста), которых там быть не должно. Можно ли полностью стереть это из истории git? Не весь файл, только несколько строк с конфиденциальными данными.

Репозиторий довольно новый, поэтому веток нет, и этот конкретный файл не был изменен с момента первоначальной фиксации. (PS: я новичок в git, я еще не понимаю сложные команды)


person AdyAdy    schedule 05.08.2017    source источник
comment
Это должна делать ветвь фильтра: stackoverflow.com/a/4114121/6309   -  person VonC    schedule 05.08.2017
comment
Возможный дубликат Как удалить /удалить большой файл из истории коммитов в репозитории Git?   -  person ephemient    schedule 05.08.2017


Ответы (2)


Теперь вы можете отредактировать файл, чтобы удалить оскорбительный контент в новом коммите, а затем в интерактивном режиме перебазировать этот коммит. Пошаговое руководство находится здесь: https://stackoverflow.com/a/21353994/4323, но суть является:

make sure you have a backup
edit thefile
git commit thefile -m "remove details"
git rebase -i --root

Теперь вы увидите список коммитов. Измените последний («удалить детали») с «выбрать» на «исправление» и переместите его после первого коммита.

После этого вам, вероятно, потребуется git push -f, чтобы переписать историю на исходном сервере.

person John Zwinck    schedule 05.08.2017
comment
Благодарю вас! Это помогло. Теперь он ушел из первоначальной фиксации, я надеюсь, что git не хранит его как резервную копию или что-то еще где-нибудь - person AdyAdy; 05.08.2017
comment
@AdyAdy: Первоначальный плохой коммит будет существовать на диске некоторое время, пока Git не решит его очистить. Вы можете сделать это сейчас, следуя инструкциям здесь: stackoverflow.com/questions/1904860/ — обратите внимание, что вам нужно будет сделать это для каждого клона репозитория, если вы параноик. - person John Zwinck; 05.08.2017

Это тот, который вы могли бы искать в первую очередь. См., например. этот пост http://help.github.com/removing-sensitive-data/ или http://help.github.com/removing-sensitive-data/

person sp1nakr    schedule 05.08.2017
comment
Сначала искал, говорят об удалении всего файла. Мне нужно, чтобы файл был там, я хочу, чтобы из него были удалены только несколько строк. - person AdyAdy; 05.08.2017