Как удалить защищенный коммит с помощью 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') - это защищенная фиксация, и ее файловая иерархия вообще не будет изменена.
Для дальнейшего изучения вы можете обратиться по этой ссылке