Как навсегда удалить файл, хранящийся в GIT?
Я создал резервную копию моей базы данных до GIT, чтобы я мог получить db на моем домашнем компьютере.
Я не хочу, чтобы этот файл был версией, это было всего лишь 1 раз.
Могу ли я удалить его навсегда, чтобы GIT не отслеживал его в будущем или исторически?
Ответы
Ответ 1
Я всегда нахожу Guides: Полностью удалите файл из всех файлов версий.
Чтобы удалить файл с именем Rakefile
:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch Rakefile' \
--prune-empty --tag-name-filter cat -- --all
Эта команда будет запускать всю историю каждой ветки и тега, изменяя любую фиксацию который включал файл Rakefile
, и после этого все фиксируются. Фиксации которые потом пусты (потому что они только изменили файл Rakefile), являются полностью удалены.
Ответ 2
Обновление для удаленного репозитория:
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch FOLDERNAME" -- --all
замените FOLDERNAME файлом или папкой, которую вы хотите удалить из данного репозитория git.
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
Теперь нажмите все изменения в удаленном репозитории
git push --all --force
Это очистит удаленный репозиторий.
Ответ 3
Вы также можете использовать bfg для удобства.
BFG - более простая и быстрая альтернатива git -filter-ветке для очистки плохих данных из истории хранилища Git:
Удаление сумасшедших больших файлов
Удаление паролей, учетных данных и других конфиденциальных данных
$ bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
Или просто замените все вхождения некоторого файла:
$ bfg --replace-text passwords.txt
проверить https://rtyley.github.io/bfg-repo-cleaner/ и https://help.github.com/articles/removing-sensitive-data-from-a-repository/
Ответ 4
Вы можете использовать git ветвь фильтра --index-filter
.