Согласно документации git , я могу удалить файл из своей истории репозитория следующим образом:
git filter-branch --tree-filter 'rm -rf filename' HEAD
Я попробовал это и получил эту ошибку:
You need to run this command from the toplevel of the working tree.
Итак, я попробовал это и получил ту же ошибку:
git filter-branch --index-filter 'rm -f /dist/bikeMap.html' HEAD
После проверки нескольких вопросов stackoverflow, я также попытался
git filter-branch --index-filter 'rm -f /dist/bikeMap.html' master..HEAD
git filter-branch --tree-filter 'rm -f /dist/bikeMap.html' --all
git filter-branch --tree-filter 'rm -f /dist/bikeMap.html' -- --all
git filter-branch --tree-filter 'rm -f /dist/bikeMap.html' master
И т.д.Все выдают одну и ту же ошибку.
git status
говорит
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
Моя версия git 2.11.0
.
РЕДАКТИРОВАТЬ: Я также попытался:
git filter-branch --index-filter "git rm --cached --ignore-unmatch dist/bikeMap.html" HEAD
git filter-branch --index-filter "git rm --cached --ignore-unmatch dist/bikeMap.html" -- HEAD
git filter-branch -f --index-filter 'git rm --cached --quiet --force "dist/bikeMap.html"' --prune-empty -- HEAD
git filter-branch -f --index-filter 'git rm --cached --quiet --force dist/bikeMap.html' --prune-empty -- HEAD
git filter-branch -f --index-filter 'git rm --cached --quiet --force dist/bikeMap.html' --prune-empty -- master
git filter-branch -f --index-filter 'git rm --cached --quiet --force dist/bikeMap.html' --prune-empty master
git filter-branch -f --index-filter 'git rm --cached --quiet --force /dist/bikeMap.html' --prune-empty master
git filter-branch -f --index-filter 'git rm --cached --quiet --force /dist/bikeMap.html' --prune-empty HEAD
Та же ошибка.
РЕДАКТИРОВАТЬ: прогресс!
git filter-branch --index-filter 'git rm --cached --quiet --force dist/bikeMap.html' --prune-empty
привело к ошибке
Rewrite 419e8702fd8a5fe9ddad59a0fd7ff008edffdeab (1/47) (0 seconds passed, remaining 0 predicted)
fatal: pathspec 'dist/bikeMap.html' did not match any files
index filter failed: git rm --cached --quiet --force dist/bikeMap.html
, если я ls dist/bikeMap.html
получу
dist/bikeMap.html
Итак, оно существует.
Как я могу использовать git filter-branch
для удаления файла из нашего репо?