Как навсегда удалить файл, хранящийся в GIT? - PullRequest
43 голосов
/ 05 января 2010

Я сделал резервную копию своей базы данных в GIT, чтобы получить базу данных на своем домашнем компьютере.

Я не хочу, чтобы этот файл был версионным, на самом деле это был всего один раз.

Могу ли я удалить его навсегда, чтобы GIT не отслеживал его развитие или историю?

Ответы [ 4 ]

84 голосов
/ 05 января 2010

Я всегда нахожу Руководства: Полное удаление файла из всех ревизий ленты полезно.

Чтобы удалить файл с именем Rakefile:

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch Rakefile' \
  --prune-empty --tag-name-filter cat -- --all

Эта команда будет запускать всю историю каждой ветви и тега, изменяя любой коммит это включало файл Rakefile, и любые коммиты впоследствии. Фиксации которые потом пусты (потому что они только изменили Rakefile) удален полностью.

25 голосов
/ 02 июля 2014

Обновление для удаленного репозитория :

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 голосов
/ 20 февраля 2017

Вы также можете использовать BFG для удобства.

BFG - это более простая и быстрая альтернатива git-filter-branch для удаления плохих данных из истории вашего репозитория 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/

1 голос
/ 05 января 2010

Вы можете с git filter-branch s --index-filter.

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