forcecharlie
2016-08-08 10:18:41 +08:00
git clone --depth 会从最新的 commit 迭代回去,并不是完整的 repository ,一些额外的操作需要还原成完整的仓库, 在服务器上进行 git gc ---prune=now 可以一定程度的减小仓库体积. 一个思路是,扫描出 仓库中大文件提交时的 父 commit, 然后将分支强制设置为此 commit,即修改 .git/refs/heads/xxxx 的 commitid ,工作目录删除此大文件,然后创建提交,运行 git gc, 强制推送到服务器,服务器运行 git gc . 这样仓库的体积就可以减小了,这个实际上和 git rebase 类似,但不会丢失当前的 commit. 对于你的需求, git commit 的创建由父 commit 根 tree,提交者 提交信息等通过 sha1 创建,是链式的,牵一发而动全身. 所以你的不太好实现.