如何从我的 Git 存储库中删除未引用的 blob

2024-01-14

我有一个 GitHub 存储库,有两个分支 -master and release.

The release分支包含二进制分发文件,这些文件导致存储库大小非常大(超过 250 MB),因此我决定清理这些内容。

首先我删除了远程发布分支,通过git push origin :release.

然后我删除了本地的release分支。首先我尝试过git branch -d release,但是 Git 说“错误:分支‘release’不是当前 HEAD 的祖先。”这是真的,所以我就这么做了git branch -D release来强制将其删除。

但我的存储库大小(无论是在本地还是在 GitHub 上)仍然很大。然后我浏览了常用的 Git 命令列表,比如git gc --prune=today --aggressive,没有任何运气。

按照 Charles Bailey 的说明进行操作:苏1029969 https://stackoverflow.com/questions/1029969/why-is-my-git-repository-so-big/1036595#1036595我能够获得最大 blob 的 SHA-1 哈希值列表。然后我使用了来自的脚本SO 460331 https://stackoverflow.com/questions/460331/git-finding-a-filename-from-a-sha1/460417#460417找到斑点...并且五个最大的斑点不存在,尽管找到了较小的斑点,所以我知道脚本正在运行。

我认为这些博客是来自发布分支的二进制文件,并且在删除该分支后它们以某种方式留下了。摆脱它们的正确方法是什么?


我向您展示这个有用的命令“git-gc-all”,保证删除all你的 Git 垃圾,直到它们可能出现额外的配置变量:

git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 \
    -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc

您可能还需要先运行类似的命令:

git remote rm origin
rm -rf .git/refs/original/ .git/refs/remotes/ .git/*_HEAD .git/logs/
git for-each-ref --format="%(refname)" refs/original/ |
    xargs -n1 --no-run-if-empty git update-ref -d

您可能还需要删除一些标签:

git tag | xargs git tag -d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从我的 Git 存储库中删除未引用的 blob 的相关文章

  • 如何修复树与树之间的 Git 错误断开链接?

    我的事务被中断 当我再次尝试时 我遇到了空或损坏的对象错误 在另一个问题之后 我删除了所有空文件 当我运行时 git fsck full 我收到这个错误 Checking object directories 100 256 256 don
  • 使用 TFS 个人访问令牌克隆 Git 存储库

    我正在尝试以编程方式克隆 git 存储库 我的 ASP NET MVC 应用程序正在创建并启动一个进程 处理进程的代码工作正常 但是当尝试使用本地 TFS PAT 克隆 git 存储库时 身份验证失败 我无法使用 NTLM 或要求用户输入凭
  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • 相当于“svn update -r”的 git 是什么?

    我是最近的 git 转换者 能够使用 git svn 将我的分支保留在本地而不干扰 svn 服务器真是太棒了 最新版本的代码中存在一个错误 我想确定一个它起作用的时间 以便我可以使用 git bisect 我找不到正确的命令来及时返回 谢谢
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • Jenkins git 插件 - 有时太慢

    以下内容摘自 Jenkins 日志 00 00 03 135 gt git fetch tags progress email protected cdn cgi l email protection some org some repo
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • 重新打包存储库对于大型二进制文件有用吗?

    我正在尝试将大量历史记录从 Perforce 转换为 Git 并且一个文件夹 现在是 git 分支 包含大量大型二进制文件 我的问题是运行时内存不足git gc aggressive 我的主要问题是重新打包存储库是否可能对大型二进制文件产生
  • 如何使用交互式变基将提交编辑为未提交?

    我想使用交互式变基来编辑以前的提交 但是当我进入该提交的编辑模式时 所有文件都已提交 我知道我可以进行更改并修改提交 但我希望所有更改最初都未提交 暂存或以其他方式 这样我就可以对其进行编辑 就像在最初提交之前一样 这可能吗 Imagine
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 远程测试时如何搭建git开发环境

    这似乎是一个愚蠢的问题 但我觉得我对 GIT 相当了解 但我似乎无法按照我的意愿设置我的开发环境 我要么错过了一些非常简单的东西 要么我做错了 我在我的服务器上初始化了一个裸 git 存储库 将其克隆到我的本地计算机 提交我的文件并推送到原
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • 我可以直接从我的谷歌云端硬盘在线推送/拉取吗?

    有一些方法可以通过谷歌驱动器同步 Windows 应用程序将我的本地 git 存储库同步到我的谷歌驱动器 但我想知道我是否可以完全绕过它的需要 Fro eg git remote add origin https drive google
  • git 认为文件已更改

    我在一台机器上对一个项目做了一些工作 然后推送到 github 在另一台机器上克隆并做了一些工作 然后推送 然后我回到第一台机器并做了一个pull 现在 第一台机器认为项目中最初的所有文件都已更改 我试过了 git checkout f a
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我
  • 仅使用 Git grep 的文件名

    我只想查看文本中包含特定单词的不同文件 current directory git grep word 显示文件中具有匹配单词的每一行 所以我尝试了这个 current directory git grep word files with

随机推荐

  • 安装路径不可写R,无法更新包

    我正在尝试使用他们网站上的代码将 Bioconductor 安装到 R 中 当我输入代码 见下文 时 我收到一条错误消息 指出某些软件包无法更新 安装路径不可写 gt try http if https URLs are not suppo
  • 重命名 Kubernetes 中的部署

    If I do kubectl get deployments I get kubectl get deployments NAME DESIRED CURRENT UP TO DATE AVAILABLE AGE analytics re
  • 如何在 Django-rest-framework 序列化器中的关系模型中获取额外的列?

    I have Category and Article model Article有外键引用Category in my serializer由于 我可以在类别模型中获取名称列 str 方法 但我怎样才能得到其他列Category mode
  • 使用 Symfony2 / Symfony3 中的 FOSUserBundle 删除/替换用户名字段为电子邮件

    我只想使用电子邮件作为登录方式 我不想使用用户名 symfony2 symfony3 和 FOSUserbundle 可以吗 我在这里读到http groups google com group symfony2 browse thread
  • 不要扩展 React.Component

    创建 React 组件的 es6 语法是export default class ExampleComponent extends React Component 但是它仍然有效export default class ExampleCom
  • 如何为pytest命令指定几个标记

    Reading http doc pytest org en latest example markers html http doc pytest org en latest example markers html我看到了基于标记包含或
  • 限制 Java 中 HashMap 的最大大小

    我想限制 a 的最大尺寸HashMap对我正在实现的各种哈希算法进行度量 我查看了其中之一的负载因子HashMap的重载构造函数 HashMap int initialCapacity float loadFactor 我尝试在构造函数中将
  • 无法在 logback.xml 中使用 Spring 属性占位符

    我有一个使用 Logback 的 Spring Boot 控制台应用程序 所有属性 对于应用程序以及 Logback 都被外部化到类路径中的标准 application properties 文件中 这些属性可以在应用程序本身中很好地获取
  • 如何导入和使用.so文件

    请给我示例 代码 如何将 gccgo 生成的 so 文件导入到 main go 中 Go 尚不支持动态代码加载 即插件 有计划在未来添加支持 但目前尚未确定时间表 https docs google com document d 1nr T
  • 如何查看 numpy 广播对象?

    根据文档 http docs scipy org doc numpy user basics broadcasting html gt gt gt a np array 1 0 2 0 3 0 gt gt gt b np array 2 0
  • 正则表达式用于识别 Guid 后跟数字

    我有一个可以识别 Guid 的正则表达式 string pattern 0 9a fA F 8 0 9a fA F 4 0 9a fA F 4 0 9a fA F 4 0 9a fA F 12 我有一个可以识别数字的正则表达式 string
  • 如何在 Xamarin.Forms 中获取客户端设备的 MAC 地址?

    在我的客户端服务器解决方案中 我需要运行 Xamarin Forms 应用程序的前端设备的 MAC 地址 目前我只有一个条目 用户应该在其中输入运行应用程序的设备的 MAC 地址 主界面 我已经搜索过这个主题 发现iOS和Android对于
  • 如何将 AngularJS 变量传递给 Javascript?

    我正在构建一个带有模态窗口的 AngularJS Web 应用程序 在模态窗口中 我可以显示 JQuery Flot 实时图表 类似于 http people iola dk olau flot examples realtime html
  • 获取两个 NSDate 之间的准确时差?

    有什么办法可以找出两者之间的准确差异NSDate 我已经找到了解决方案 但它们不够准确 我需要考虑夏令时 不同月份有不同天数等事实 诸如 60 60 24 等计算分钟 小时和天的简单计算不会将它们考虑在内 假设我需要计算出现在时间之间的差异
  • 使用字典的 Protobuf-net 对象引用反序列化:引用跟踪对象在反序列化期间更改了引用

    我在尝试使用 protobuf net 序列化 反序列化复杂对象图时遇到一些问题 我正在开发一个遗留应用程序 我们正在使用 Net Remoting 将 GUI 客户端连接到 C 服务 由于使用默认值的对象图的序列化大小 我们发现海外用户的
  • 上传1GB或以上的文件

    上传大于 1 GB 的文件的最佳方式是什么 当前情况 我们正在使用 Flask 来部署网络服务器 我们必须上传大于 1 GB 的文件 以前我们只上传了几MB的文件 所以 这不是问题 但现在对于大于 1 GB 的文件 旧的上传方法不再可行 服
  • Qt 中带有进度回调的 CopyFileEx

    有人能给我一个在 Qt 中使用 CopyFileEx 和进度回调的工作示例吗 我发现了一些划痕并尝试合并它但没有成功 我什至无法将 CopyProgressRoutine 函数作为 CopyFileEx 的参数传递 因为我无法声明指向该函数
  • 加载 data.table 对象后直接使用 get(data.table) 生成新变量

    我正在尝试在 data table 中生成一个新变量 我生成 保存并再次加载该变量 加载后 我通过 get 间接寻址 data table 只要我之前不直接寻址它以创建变量 这对于生成新变量就不起作用 可能是某种环境问题 Generate
  • CDI 注入在 Servlet 中不起作用

    我真的需要你的帮助 我现在正在研究这个问题几周或几个月 对于这么长的帖子 我深表歉意 但我想尽可能准确地解释问题和我的设置 我的 JAVA EE 6 Web 应用程序主要包含 3 个 Servlet javax faces webapp F
  • 如何从我的 Git 存储库中删除未引用的 blob

    我有一个 GitHub 存储库 有两个分支 master and release The release分支包含二进制分发文件 这些文件导致存储库大小非常大 超过 250 MB 因此我决定清理这些内容 首先我删除了远程发布分支 通过git