如何使用 git repack -a -d --深度=250 --window=250

2024-01-31

我见过git gc --aggressive --prune and git repack -a -d --depth=250 --window=250建议用于减小不需要较长本地历史记录的本地 .git 文件夹的大小。 从我的阅读看来git-repack是首选,有人可以对此发表评论吗?

我真正想知道的是如何决定价值depth and window。我使用 git 来提交、推送、拉取和合并,我不知道增量链或对象窗口是什么。


我用不同的值进行了一些测试。这太大了,无法对 twalberg 的答案进行评论。

我的公司有一个代码库,曾经是svn、mercurial,现在是git。它已有 10 年历史,已有 21,000 次提交。

打包前为 3.1 GB。重新打包后,它缩小到以下值:
(每次在 3.1GB 文件夹的新克隆上运行重新打包)。

git repack -a -d --depth=50 --window=10 -f
141.584 MB

git repack -a -d --depth=250 --window=1000 -f
110.484 MB

git repack -a -d --depth=500 --window=1000 -f
110.204 MB

在我的四核 Mac 上,它们分别花费了大约 5 分钟、15 分钟和 30 分钟。


Update:

我进行了第二次重新打包(250,1000),并用 500 和 1000 重新打包,看看新的 3.1gb 存储库和已经重新打包的 110mb 存储库之间是否有任何区别。

git repack -a -d --depth=250 --window=1000 -f
110.484 MB
git repack -a -d --depth=500 --window=1000 -f
110.212 MB

结论:重新打包 500、1000 会生成一个 110.2 MB 的文件,无论该文件是否已打包。

Update2:

我进一步好奇,在已重新打包的存储库上运行较低值的重新打包是否会导致大小增加。

git repack -a -d --depth=500 --window=1000 -f
110.204 MB
git repack -a -d --depth=50 --window=10 -f  
142.056 MB

结论:重新打包导致存储库大小从 110 MB 回升至约 140 MB

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

如何使用 git repack -a -d --深度=250 --window=250 的相关文章

  • 使用 GIT 自动增加 AssemblyFileVersion

    好吧 我知道这可能不是传统的 但除此之外 我使用 AssemblyFileVersion 作为我的 构建名称 字符串 它的格式如下 File Version information for an assembly consists of t
  • 从 git 中删除历史记录 - git 命令失败

    我正在尝试从 Git 历史记录中清除项目 bin 目录 我已经将 bin 添加到 gitignore 并运行 git rm cached r bin成功地 现在我尝试使用 GitHub 帮助页面中推荐的命令来清除历史记录 git filte
  • 在两个单独的分支或存储库中管理项目后端和前端?

    我启动了一个移动应用程序项目 该项目将具有服务器端和应用程序本身 所以 在master分支我创建了2个项目myapp server and myapp然后我创建了另外 2 个分支backend and frontend我只想将与它们相对应的
  • 警告:您的 git 版本是 1.9.3。存在严重的安全漏洞

    我在部署到 Heroku 期间收到有关 git 1 9 3 严重安全漏洞的警告 我尝试通过 homebrew 更新 git 但发现 git 最初并不是通过 homebrew 安装的 然后我通过自制程序安装了它 brew update bre
  • Gerrit 安装后无法克隆所有项目存储库

    我有一个新设置的 Gerrit 实例 目前只有两个存储库 所有项目 binutils 测试 尝试克隆所有项目时 我收到以下错误 git clone ssh user hostname 29418 All Projects Initializ
  • Windows 版 GitKraken 中的文件名太长

    正如建议的Q22575737 https stackoverflow com a 22575737 6623589 我已经更新了我的注册表并设置了git config system core longpaths true在处理长路径时 问题
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • Git 无效的修订范围 Symfony2 Composer 外部包

    RuntimeException Failed to execute git log 18efcf67d236d5bbf46ac67820250dffd0474b6e 94e2146f525fa1367e15646fa273e5b34f92
  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • 如何解决 VSTS 中拉取请求中的合并冲突?

    我已经创建了拉取请求 我进入了这个 批准 按钮不执行任何操作 并且 完成 被禁用 如何解决拉取请求中的冲突 Update 微软刚刚添加了基于浏览器的合并 这可能会让你摆脱小冲突的困境 并提供自 Sprint 150 起改进了不同场景的可视化
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • 有谁知道类似于 SVN Time-Lapse View 的 Git 工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVN Time Lapse View 是一个跨平台查看器 可以下载文件的所有修订版本 并允许您通过拖
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像
  • git reset 命令中的 ~1 是什么意思?

    git 重置 HEAD 1 我的印象是 1 的意思是 从 HEAD 开始 遵循 1 链接 并将 HEAD 标签设置为新的提交节点 我正期待着 git 重置 HEAD 2 跟随 2 个链接 然后设置 HEAD 标签 但是 如果我尝试它 我会收
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • 如何将工作树与提交进行比较?

    我在用着 git diff mycommit 用于比较我的工作树mycommit 但它似乎忽略当前索引中不存在的文件 您可以按如下方式重现它 git init echo A gt A txt git add git commit m A g

随机推荐

  • 输入文本框后台的 jQuery 自动完成

    我有一个 jQuery 文本框自动完成脚本 它使用 PHP 脚本来查询 MySQL 数据库 目前 结果显示在文本框下方 但我希望它看起来就像在文本框中淡出一样 我怎样才能做这样的事情 Google Instant 搜索框就是一个例子 我当前
  • Memcached – GET 和 SET 操作是原子的吗?

    场景如下 一个查询 memcached 缓存的简单网站 批处理作业每 10 15 分钟更新一次相同的缓存 使用该模式是否会出现任何问题 例如缓存未命中 我担心所有可能发生的比赛状况 例如 如果网站对 memcached 中缓存的对象执行 G
  • 以 Scaffold 作为子项的 InheritedWidget 似乎不起作用

    我希望在 Flutter 应用程序的根级别使用 InheritedWidget 以确保经过身份验证的用户的详细信息可供所有子小部件使用 本质上使 Scaffold 成为 IW 的子级 如下所示 override Widget build B
  • WebView 不接受某些 cookie

    我正在 Webview 中加载一个网站 该网站使用一些 cookie 来存储会话 我写了以下几行来接受cookie CookieSyncManager createInstance this CookieSyncManager getIns
  • DOM4J:检索按属性值过滤的节点值

    我有一个给定的 xml 结构如下
  • iOS 17 中的 SwiftUI View 泄漏

    似乎 View 及其成员在演示后不会取消分配 main struct ExampleApp SwiftUI App State var show false var body some Scene WindowGroup VStack Bu
  • 如何使用openlayers在浏览器中显示高分辨率图像

    我正在尝试使用 openlayers 5 在浏览器中显示高分辨率图像 我找到了一个有关如何使用 Zoomify 创建图像图块并使用 openlayers 地图渲染它的示例 但我无法将它用于我自己的形象 我对此完全陌生 我问的问题可能很琐碎
  • 单击按钮时旋转 Font Awesome 图标并触发手风琴过渡

    我是解决方案的一部分 但我坚持在单击实际的 披露 按钮时让 FA 图标旋转 我似乎也不知道该把它放在哪里transition属性 以便让披露内容框顺利打开 类似于手风琴 例如这个 https www w3schools com howto
  • 任意数量集合的笛卡尔积

    您是否知道一些简洁的 Java 库可以让您生成两个 或更多 集合的笛卡尔积 例如 我有三套 第一个是 Person 类的对象 第二个是 Gift 类的对象 第三个是 GiftExtension 类的对象 我想生成一组包含所有可能的三元组 P
  • 如何在基于 servlet 的 Web 应用程序中临时保存生成的文件

    我正在尝试生成一个 XML 文件并将其保存在 WEB INF pages 下面是我的代码 它使用相对路径 File folder new File src main webapp WEB INF pages StreamResult res
  • 使用 R Shiny 将(多个)值添加到数据框

    我将 R闪亮与 ggplot 结合使用来可视化某个数据集 我希望用户能够向该数据集添加值 我可以让我的应用程序向我显示原始数据 一个数据点 但是一旦用户输入一个新点 旧的数据点就消失了 用户输入的数据实际上并未存储在我的数据框中 我正在使用
  • Android WebView加载GoogleMap数据渲染

    我正在尝试使用以下函数在 WebView 中显示 div String baseUrl String mimeType text html String encoding UTF 8 html sb toString String hist
  • 有人可以向我解释“卫生”的概念吗(我是一名方案程序员)?

    所以 我是 r6rs 方案的新手 正在学习宏 谁能给我解释一下 卫生 是什么意思 提前致谢 卫生经常在宏的上下文中使用 卫生宏不使用可能会干扰正在扩展的代码的变量名称 这是一个例子 假设我们想要定义or带有宏的特殊形式 直观地说 or a
  • 通过 os.system 推送 [重复]

    这个问题在这里已经有答案了 我正在使用 crontab 为我的 Minecraft 服务器运行维护脚本 大多数时候它工作正常 除非 crontab 尝试使用重新启动脚本 如果我手动运行重新启动脚本 则不会有任何问题 因为我相信它与路径名有关
  • Android:在非 root 设备上运行脚本

    我可以在非 root 设备上运行二进制可执行文件或脚本 bash 文件吗 我有一个像这样的小脚本 helloworld sh echo hello world 我把它保存在 sdcard并尝试跑步 但我得到了 没有权限 我研究过 原因是执行
  • 将数组short转换为char的最快方法

    我每秒必须处理大约 2000 100 个元素数组 这些数组对我来说是短裤 其中的数据位于高位 需要移位并转换为字符 这是我能得到的最有效的方法 还是有更快的方法来执行此操作 我必须跳过其中 2 个值 for int i 0 i lt 48
  • 流式下载大文件,Python 请求中断

    我在 python requests v 2 0 1 中流式下载大文件 约 1 5 GB 时遇到问题 with open saved rar wb as file r session get url stream True timeout
  • “反向”统计:根据平均值和标准差生成数据

    拥有数据集并从中计算统计数据很容易 反过来又如何呢 假设我知道某个变量具有平均值 X 标准差 Y 并假设它具有正态 高斯 分布 生成适合分布的 随机 数据集 任意大小 的最佳方法是什么 编辑 这种发展自这个问题 https stackove
  • 使用 std::function 进行隐式转换[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我的 C 编译器无法推导出 boost 函数的模板参数 https stackoverflow com questions 5871044 why cant my c compiler dedu
  • 如何使用 git repack -a -d --深度=250 --window=250

    我见过git gc aggressive prune and git repack a d depth 250 window 250建议用于减小不需要较长本地历史记录的本地 git 文件夹的大小 从我的阅读看来git repack是首选 有