Удалить чувствительную строку из более раннего git commit - PullRequest
0 голосов
/ 13 мая 2018

Мне трудно удалить одну строку, содержащую некоторую конфиденциальную информацию, из предыдущего коммита.

Допустим, мой журнал git выглядит следующим образом

b200bbe (HEAD -> master) A
67a8df7 B
47a6947 C
a55540f D
68b51d5 E

И теперь я вижу, что в одном из моих тестовых файлов я создал строку отладки, распечатывающую некоторую конфиденциальную информацию во время фиксации E

Если я просто удалю строку и передам изменения, люди смогут увидеть эту строку, просматривая файл во время между фиксацией E и новым фиксацией.

Есть несколько статей, объясняющих, как удалить полный файл из дерева git, но я не могу найти способ удалить только одну строку. filter-branch --tree-filter кажется самым близким, но я все равно получаю изменения, которые мне нужно зафиксировать, и git diff выставит строку, удаленную из команды.

Ни один из коммитов еще не был передан, и после коммита E не было создано ни одной ветки. Можно ли удалить одну строку в файле из полного дерева мерзавцев?

1 Ответ

0 голосов
/ 13 мая 2018

Вы можете попробовать с git rebase -i.

Следуя примеру, который вы использовали в своем вопросе и предполагая, что A находится в удаленном репо, а B, C, D и E нет, после использования git rebase вы получите такой экран:

pick 67a8df7 B
pick 47a6947 C
pick a55540f D
pick 68b51d5 E

Тогда вам нужно будет отредактировать коммит E-строки следующим образом:

pick 67a8df7 B
pick 47a6947 C
pick a55540f D
edit 68b51d5 E

Наконец, удалите нужную строку, зафиксируйте изменения и используйте git rebase --continue для продолжения.

Больше информации в документации git rebase .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...