I have a file in my GitHub repository that I would like to remove from my previous commits. I used BFG Repo-Cleaner's delete-files
command and it appeared to work, but when I go on my GitHub repository the file is still on all the previous commits. If I try and do the command again, it gives me a
BFG aborting: No refs to update - no dirty commits found??
Am I misunderstanding how BFG works? If so how can I remove the file from my past commits on GitHub?
Here are the steps I took:
--mirror
flag. cd
to my local visual studio project. java -jar bfg-1.12.1.13.jar --delete-files <.json file I wanted to delete> <my local clone copy from step 1>.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
A git push
alone should not work, since BFG repo cleaner does rewrite the history of a repo.
It should work though when you cloned (as you did) with --mirror
, since, on git push
, locally updated refs will be force updated on the remote end.
Note that:
By default the HEAD branch is protected, and while its history will be cleaned, the very latest commit (the 'tip') is a protected commit and its file-hierarchy won't be changed at all.
Don't forget to remove your file from your HEAD (current working tree) as well, before pushing back.
After discussion , it seems the commands were not executed in the right folder. That folder should end with .git
: xxx.git
: a clone --mirror
is a bare repo.
Skip step 2 in your steps and it should work (don't cd
into your <repo-name>.git
).
You need to run BFG from the folder that contains the folder <repo-name>.git
. BFG is looking for a folder called <repo-name>.git
in the working directory. That's why it didn't change anything.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.