一、如果只是想减少 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