Если необходимо удалить файл, которого не должно быть в репозитории.

1. Создаем копию репозитория

git clone blog-tree blog-tree-clone

cd blog-tree-clone

2. Удаляем файлы из всех коммитов:

git filter-branch --tree-filter <command>

- any console command

Пример:

--tree-filter 'rm -f filename.txt' // удаление из корня

--tree-filter 'find . -name "*.nginx" -exec rm {} \;' //удаление из всех папок проекта по маске

Полная комманда удаления файла из всех коммитов в репозитории:

git filter-branch --tree-filter 'rm -f filename.txt' -- --all

-f - используем, чтобы если в каком-то коммите не удастся удалить файл не остановило процесс для остальных.

Более быстрой операцией будет удаление гитом файла:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename.txt'

После удаления файлов из истории возможно останутся коммиты, в которых были только эти файлы, т.е. пустые коммиты, которые в себе не несут ни какой информационной ценности, их можно удалить:

git filter-branch -f --prune-empty -- --all

Эту очистку можно вставлять в комманду очистки, пример:

git filter-branch --tree-filter 'rm -f filename.txt' --prune-empty -- --all

Написано 19 ноября 2016 в 20:18

0 комментариев


Вы должны быть авторизованы, для того, чтобы оставлять свои комментарии.

Войдите через соц.сети

или через почту здесь