I want to clean a large file from my local git repository (and incidentally clean my repository to reduce size). This is my bash:
#!/bin/bash
bigfile="/path_to_mygitproject/bigfile.tar.gz"
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch '"$bigfile"'' --prune-empty --tag-name-filter cat -- --all
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch '"$bigfile"'' HEAD
But now show the following warning:
WARNING: git-filter-branch has a glut of gotchas generating mangled history
rewrites. Hit Ctrl-C before proceeding to abort, then use an
alternative filtering tool such as 'git filter-repo'
(https://github.com/newren/git-filter-repo/) instead. See the
filter-branch manual page for more details; to squelch this warning,
set FILTER_BRANCH_SQUELCH_WARNING=1.
I have always used this bash and have never had a problem. Until now. I guess something changed in git.
I try to replace "git filter-branch" with "git filter-repo" but I get the message:
git: 'filter-repo' is not a git command. Look at 'git --help'.but
what should i fix? thanks
Update:
I did this but it seems that everything changed
wget https://raw.githubusercontent.com/newren/git-filter-repo/master/git-filter-repo -O /home/user/.local/bin/git-filter-repo
chmod +x /home/user/.local/bin/git-filter-repo
And replace in my script "git filter-branch" with "git filter-repo". Out:
git-filter-repo: error: argument --prune-empty: expected one argument
git-filter-repo: error: unrecognized arguments: --index-filter git rm -r --cached --ignore-unmatch bigfile.tar.gz HEAD
I checked the examples and I add "--prune-empty auto", but i couldn't fix my script, because I don't know what the alternatives to "--index-filter" or "--tag-name-filter" will be (it seems they don't exist)
git filter-repo --version
ffc6fa9265d8
git --version
git version 2.25.1
Update:
I have managed to reduce the size of my repo with the command:
git filter-repo --strip-blobs-bigger-than 10M
But it is an unsuitable method, since i can delete other files that are larger than 10M and that I do not want to be deleted
Solved!
git filter-repo --path bigfile.tar.gz --invert-paths
vote close
0 Answers