git - 我如何摆脱我的 git repo 中的大包文件?

我有一个只有一个分支的 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 repack 的替代品,但没有更好的效果
  • git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin -> 无济于事
  • 我在本地克隆 repo 的 git clone file://技巧,应该会删除虚假引用 -> 尽管如此,包还是 1.3GB

下一步是什么?

最佳答案

请仔细阅读我的内容!

yes I know this topic is 4 years ago but I just read it today(17 Dec 2020)

这是我自己做的,对我有用,但对你可能有用,也可能不可用

给我

“历史”不是问题,但我的问题是“包”文件 它的大小超过了项目文件 (我只想保持我的 vim 配置为 .7zip 格式 .7zip 文件只有 40 MB,但历史文件有 500 MB 当我尝试将它 pull 回新的设置机器时,这对我来说是个大问题 在我糟糕的慢速互联网连接上)所以这就是为什么 SIZE 对我来说很重要


所以如果你这样做,你将失去你对你的项目所做的所有历史


我所做的是:

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

  2. 运行 git init(我用这个 repo 有 3 个分支 master , desktop , laptop) 现在我运行 git checkout -b main 来创建新的分支调用 main 并做一些编辑 文件 README.md 保存文件然后输入 git status 你会看到一些未跟踪的文件 现在添加它们 git add 。 添加所有内容然后提交更改 git commit -m"your message here" 然后运行 ​​ git push -u origin main 只需推送到我们创建的新分支即可。

  3. 转到你的 git 仓库,然后将默认分支(在我的例子中是 master)更改为 我刚刚创建的新分支然后我删除所有分支(master,desktop,laptop) 因为我现在使用 main 作为我的默认分支

  4. 如果我想返回 master 分支,请返回终端运行 git checkout -b master 我做了一些编辑 README.md 文件,然后 git add . 然后是 git commit -m"push message here" 跟着 git push -u origin master 所以现在我有一个分支 master

  5. 回到浏览器我只是从分支 main 切换到 master 作为默认分支

这就是我所做的一切,这对我来说是有用的,但正如我提到的,你将失去所有的历史

https://stackoverflow.com/questions/38509127/

相关文章:

php - Symfony 进程组件中的多个命令

java - 我如何使用自定义 java 库(来自 github)

mongodb - 结合 mongo $push 和 $currentDate 以将时间包含在新的数

react-native - 如何获得集成测试的 React Native 代码覆盖率?

ruby-on-rails - 在 HTTParty 响应中访问文件名?

react-native - TextInput 通过引用获取值 react native

wordpress - wp_cron 计划但未触发

reactjs - react bootstrap Tabs 和 Nav tems 保持垂直堆叠

cmake - 如何在 externalproject_add 中设置命令参数

google-app-engine - Google AppEngine - 检测客户端是否支持 H