小编J-P*_*J-P的帖子

完全从所有分支和标记中删除git存储库对象,并将更改推送到远程

我们将客户端迁移到了一个网站.我们的代码在一个单独的分支上,然后合并到master和release中.对于其他功能,Master已经多次分支.所有这些分支使得存储库比我在网上找到的示例稍微复杂一些.

我们现在意识到客户端的原始媒体 - 主要是图像和一个大的CSV文件 - 也被检入Git.虽然它只有12MB​​左右,但有几个原因可以删除它(尤其是客户端的文件名中包含非ASCII字符,这些字符与我们在OSX上的Vagrant box的共享文件夹一起播放.)以下是存储库的大小细分:

$ du --max-depth 1 -h
12M  ./.git
13M  ./modules
2.0M ./themes
27M  .
Run Code Online (Sandbox Code Playgroud)

虽然二进制文件显然现在存在于多个分支上,但据我所知,我应该能够执行以下操作来删除二进制文件,然后删除与它们对应的存储库对象:

$ git filter-branch --tree-filter "git rm -rf --ignore-unmatch modules/custom/mymigration/data/photos/*" # Did this with and without "HEAD" argument
[snip lots of output]
$ git reflog expire --expire=now --all 
$ git gc --aggressive --prune=now
Run Code Online (Sandbox Code Playgroud)

但是,我仍然有一个很大的.git子文件夹:

$ du --max-depth 1 -h
12M  ./.git
1.4M ./modules
2.0M ./themes
15M  .
Run Code Online (Sandbox Code Playgroud)

最大的文件是.git/objects/pack/pack -.... pack.当我验证.idx文件时:

$ git verify-pack -v .git/objects/pack/pack-53c8077d0590dabcf5366589c3d6594768637f5e.idx | sort -k 3 -n …
Run Code Online (Sandbox Code Playgroud)

git indexing history repository

3
推荐指数
1
解决办法
1626
查看次数

标签 统计

git ×1

history ×1

indexing ×1

repository ×1