一、如果只是想减少 clone 下来的 .git 体积,考虑 shallow clone
# 只拉取其最新的 i (1,2,3,4,5...)层提交
git clone --depth i
二、抛弃全部历史,考虑直接重建备份
$ rm -rf .git
$ git init
$ git add .
$ git commit -m "init 0"
$ git remote add origin <your_github_repo_url>
$ git push -f -u origin master
三、抛弃部分历史,考虑 git replace + git filter-branch
# 创建一个 orphan commit (初始提交即为最常见的 orphan commit)
# orphan 孤儿的意思
git replace --graft T
git filter-branch -- --all
# 删除之前的 git-replace 关联
git replace -d T
# 清理 reflog
git reflog expire --expire=all --all
# 重新打包,所有关联对象合并入包中,所有非关联对象移出包成为松散文件
git gc --aggressive
# 清理所有松散文件
git prune --expire now