Я готовлю репо к публикации, и мне нужно полностью удалить определенную внутреннюю информацию из его истории. Эти данные могут быть в различных файлах, которые я должен проверить / удалить вручную. Обратите внимание, что следует удалить не весь файл, а только определенное содержимое.
Когда я делаю git rebase -i --root
, я могу пометить все коммиты, которые (a) потенциально нуждаются в модификации, как edit
, и те что (б) нужно go полностью как drop
. (Примечание: список коммитов для просмотра не слишком длинный и был открыт с помощью git log --stat | grep 'commit\|name1\|name2\|...'
.) При просмотре коммитов типа (a) я мог бы найти тот, который на самом деле нужно полностью удалить. Для этого я попытался rebase --skip
, но, к моему удивлению, это все еще оставляет коммит на месте.
Как я могу удалить коммит во время git rebase
, который я первоначально выбрал для edit
изначально?
Пример:
$ git init
$ for COM in A B C; do touch $COM; git add $COM; git commit -m "add $COM"; done
$ git rebase -i --root
<mark all as 'edit'>
<modify file and change commit>
$ echo A > A; git add A; git rebase --continue
<commit needs to go away>
$ git rebase --skip
<modify file and change commit>
$ echo C > C; git add C; git rebase --continue
Файл B
все еще существует после этого.