I would like to switch from Dropbox to the open source Sparkleshare. It uses git for the syncing and versioning. If say I had a 1GB file I deleted in my folder, it stays within the history of the local .git folder. But I would like to have this kind of heavy data on the server and not the client. How can I commit my repository and delete the local one with git? Many thanks!
git fetch --depth=1
to prune the old commits. This makes the old commits and their objects unreachable.git reflog expire --expire-unreachable=now --all
. To expire all old commits and their objectsgit gc --aggressive --prune=all
to remove the old objectsDiscussion: How do Git LFS and git-annex differ?
Based on koppor's answer, I created this single line bash command to clear the local git history from all repositories which are in the same base folder:
for d in */; do echo $d && cd "$d" && git fetch --depth=1 && git reflog expire --expire-unreachable=now --all && git gc --aggressive --prune=all; cd ..; done
Note: you can replace */
by any specific folder criteria if you wish, such as *mobile*/
.
Windows cmd version (untested):
FOR /D %d IN (*) DO (echo $d && cd "$d" && git fetch --depth=1 && git reflog expire --expire-unreachable=now --all && git gc --aggressive --prune=all & cd ..)
This has saved me a few gigabytes !
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With