Git deleted folder with filter removed

I want to delete a folder from commits in my git repository, so I use this estimate:

git filter-branch --tree-filter 'rm -rf folder' HEAD
git push origin master --force

But there are no changes in my git repository, those commits that contain the folder I want to delete are on git repo.

So, I will try again, but it shows:

.git-rewrite already exists, delete it

I don't know what else I can do to remove it from all the commits that constantly contain the git repo folder.

+4
source share
2 answers

To completely remove a file or directory from the git repository, you must make sure that it is no longer referenced.

In git, a file (or blob) refers to a tree object that is referenced by either another tree object or a commit object. Commit objects refer to branches, tags, in reflog, etc.

. . git.

swing, jgit . GitDirStat. .

.git-rewrite ,

, . .git-rewrite.

PS: --tree-filter, ;) git rm -rf --cached.

+4

. , , git. , , , , .


Git

filter-branch, :

git filter-branch -f --tree-filter 'rm -rf folder' HEAD

(git push origin master --force), .

, ( ) , :

git for-each-ref --format='delete %(refname)' refs/original

reflog ( 90 ) , .

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now

:

git push origin --force --all
git push origin --force --tags

: git repo


BFG

BFG Repo-Cleaner. :

$ bfg --delete-folders folder --no-blob-protection my-repo.git

. git/ GitHub.

0

All Articles