HowTo completely remove a file from Git history | MDLog:/sysadmin
http://www.ducea.com/2012/02/07/howto-completely-remove-a-file-from-git-history/
october 2012 ‧ git ‧ open in karakeep
Karakeep has no AI summary for this page yet. summarize now
I just started working on a new project and as you would expect one of the first things I did was to download its git repository from github. These were just some scripts and should have been very small ~5M, but the clone from gitbhub took about one hour as the full repo folder was 1.5G… (with the biggest size under .git/objects/pack) Crazy… What was in the git repository history that would cause something like this? I assumed that at some point in time the repository was much bigger (probably from some file/s that don’t exist anymore), but how could I find out what were those files? And more important howto remove them from history? Well if you came here from a google search on “how to remove a file from git history” then you probably know there are plenty of docs and howtos on how to achieve this but from my experience none of them really worked. This is why I decided to document the steps needed to identify the file from the git repo history that is using all that space and to have it removed fully and bring the repository to a manageable size.
First we need to identify the file that is causing this issue; and for this we will verify all the packed objects and look for the biggest ones:
git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5
(and grab the revisions with the biggest files). Then find the name of the files in those revisions:
git rev-list --objects --all | grep <revision_id>
Next, remove the file from all revisions:
git filter-branch --index-filter ‘git rm --cached --ignore-unmatch <filename>’
rm -rf .git/refs/original/
Edit .git/packed-refs and remove/comment any external pack-refs. Without this the cleanup might not work. I my case I had refs/remotes/origin/master and some others branches.
vim .git/packed-refs
Finally repack and cleanup and remove those objects:
git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune
Hopefully these steps will help you completely remove those un-wanted files from your git history. Let me know if you have any problems after following these simple steps.
*bookmark *download *tobuy *tofollow 2d 360 3d 3dprinting 3g abandonware actionscript air algorithm android animation api app apple appstore arcade arduino art article askreddit asm audio automation backlight backup bambulab bbs berlin bitcoin blipfm blipster blog bluetooth book bookmark bootcamp brasil brazil bug buildapc business c c# c++ carro casa chiptune citypop claudeai cliq cocoa cocoa-touch code collection component controller cooking crt css database debug demoscene design deutschland dev diy dns doc dos dosbox dotnet download electronics emu emudev emulation emulator engine example famicom feedbin fix flash flex fluorine forum freeware gadget game gameboy gameboy-pocket gamecollecting gamedev games germany git GoogleReader hack hacks hamburg hardware home home-automation homeassistant homebrew honda howto html htpc http IFTTT image imported indie inspiration insteon ios iosprogramming ipad iphone iso itunes jailbreak japan japantravel java javascript job lcd lib library linux live localization mac mame math mce media mediacenter megadrive memory-management midi mod movie mp3 mpd music mythtv nas nes network objective-c opengl opensource osx pc piracy plex plugin Pocket programming project ps1 ps2 ps3 ps4 pvr python raspberrypi recalbox recipe reddit reddit-comment reddit-post region remote repro resource retrogaming retropc retropie rgb roms rubyonrails saopaulo scart sdk server shmups shop shopping sim sms snes software sound soundblaster source spotify star steamdeck svn swift synology synth tax terminal three20 tips tool toread torrent tracker travel tutorial twitter twitter-post ubuntu ui uitableview unix unlock veralite viagem video vista vita vpn vps walkthrough warez web2.0 webservices wifi wii windows wishlist wordpress xbmc xbox xcode xml xna z-wave z80