如何摆脱我的git仓库中的大包文件?

时间:2016-07-21 16:05:26

标签: git github

我有一个只有一个分支的git仓库,一个同事推了一些大文件。删除大文件后,repo大约为200MB,但git文件夹仍然是1.3GB,因为有一个巨大的.git / pack文件夹。

到目前为止我尝试了什么(根据SO的其他答案,但似乎没有帮助我):

  • BFG工具 - >我摆脱了大文件,但包文件夹仍然是1.3GB
  • git filter-branch --index-filter'git rm -r --cached --ignore-unmatch BIG_FILES' - prune-empty - >我成功地重写了历史,github网站上的历史提交中没有提到大文件
  • git repack -a -d -f --depth = 250 --window = 250 - >不会使包装变小
  • git reflog expire --expire = now --all&& git gc --prune = now --aggressive - >作为git重新包装的替代方案,但不能更好地工作
  • git for-each-ref --format ='delete%(refname)'refs / original | git update-ref --stdin - >无济于事
  • git clone file://技巧我在本地克隆了repo,哪些应删除虚假参考 - >然而,这个包是1.3GB

下一步是什么?

2 个答案:

答案 0 :(得分:0)

请仔细阅读我的内容!

是的,我知道这个话题是4年前的,但我今天才读(2020年12月17日)

我是为自己做的,对我来说是有用的,但对您来说可能有用或不可行

对我

“历史记录”不是问题,但我的问题是“打包”文件 在项目文件中的大小太大 (我只想保持.7zip格式的vim配置 .7zip文件仅为40 MB,但历史记录文件为500 MB 当我尝试将其拉回到新的设置机器时,这对我来说是个大问题 我的互联网连接速度很慢),这就是为什么SIZE对我来说很重要


因此,如果执行此操作,将会丢失您在项目中所做的所有历史记录


我所做的是:

  1. 打开终端(我使用的是manjaro 20),先cd to-my-project-folder,然后rm -rf .git

  2. 运行git init(我使用此仓库有3个分支master , desktop , laptop) 现在我运行git checkout -b main 来创建新的分支调用主程序,并在 文件README.md保存文件,然后键入git status,您将看到一些未跟踪的文件 现在添加它们git add . 以添加所有内容,然后提交更改 git commit -m"your message here" 然后运行 git push -u origin main 只需推送到我们已经创建的新分支即可。

  3. 转到您的git repo,然后将默认分支(在我的情况下是master)更改为 我刚刚创建的新分支,然后删除所有分支(母版,台式机,笔记本电脑) 因为我现在使用main作为默认分支

  4. 如果需要主分支返回到终端,我运行git checkout -b master 我做了一些编辑README.md文件,然后git add .跟着git commit -m"push message here" 跟在git push -u origin master之后,现在我有了分支主管

  5. 回到浏览器,我只是从分支主目录切换到主目录作为默认分支

这就是我所做的全部,对我来说是有用的,但是正如我提到的,您将失去所有历史

答案 1 :(得分:-2)

最简单的方法是下载该分支删除您不想要的所有内容并创建另一个存储库。否则,如果您有权访问github,则可以在那里管理文件。但在我看来,最好的解决方案是下载它并创建一个干净的新分支,而不会有任何缓存文件或任何东西。