Как удалить защищенный коммит с помощью BFG

При очистке репо с помощью BFG ( https://rtyley.github.io/bfg-repo-cleaner/) обнаружилось следующее:

Protected commits
-----------------

These are your protected commits, and so their contents will NOT be altered:

 * commit ******* (protected by 'HEAD')

3 ответа

Запуск BFG с: --no-blob-protection исправил это для меня.

Документы находятся здесь: https://rtyley.github.io/bfg-repo-cleaner/, но я не видел, где они на самом деле называют это средством для обхода ошибки.

Примечание: в моем случае я уже пытался удалить файлы вручную, не используя BFG, что привело меня в состояние, в котором я должен был использовать --no-blob-protection,

Если вы собираетесь использовать такой мощный инструмент, как BFG, я бы настоятельно рекомендовал вам прочитать его документацию (в которой это изложено), но ответить на ваш вопрос:

BFG по умолчанию оставляет "текущие" коммиты без изменений. Его автор считает, что единственный безопасный рабочий процесс - это очистить текущее состояние вашего репо вручную, проверить, что все по-прежнему работает, а затем использовать BFG для очистки истории, оставляя только текущее состояние (которое вы уже исправили вручную).

Существуют варианты, позволяющие изменить защиту по умолчанию (или отключить ее), если у вас есть варианты использования, когда вы считаете, что это не нужно (как у меня чаще, чем нет); но если вы хотите использовать их, вам обязательно нужно прочитать документы.

Это очень поздний ответ, но я столкнулся с аналогичной проблемой.

Вы пытались удалить файл из репозитория git и его историю? Вы спешили и не заметили, что файл присутствует в состоянии последнего коммита, который BFG по умолчанию считает защищенным? Это была ошибка, которая произошла сегодня между моей клавиатурой и стулом.

Если вы хотите очистить репо: (1) удалите ненужный файл с помощью обычных команд git, например, git rm file; git commit, (2) проверьте, что все по-прежнему работает без этого файла, (3) используйте bfg для перезаписи истории репо без этого файла.

Первый Что такое BFG? BFG - это более простая и быстрая альтернатива git-filter-branch для очистки плохих данных из истории вашего репозитория Git:* Удаление сумасшедших больших файлов * Удаление паролей, учетных данных и других личных данных.

Предположим, в прошлом вы допустили некоторые ошибки, но теперь вы исправили свои действия. Таким образом, BFG предполагает, что ваш последний коммит хорош, и в нем нет грязных файлов, которые вы хотите удалить из своей истории. Это предположение BFG защищает вашу работу и дает вам душевное спокойствие, зная, что BFG только меняет вашу историю репо, а не мешает текущим файлам вашего проекта. По умолчанию ветка HEAD защищена, и хотя ее история будет очищена, самая последняя фиксация ('tip') - это защищенная фиксация, и ее файловая иерархия вообще не будет изменена.

Для дальнейшего изучения вы можете обратиться по этой ссылке

Другие вопросы по тегам