git 删除文件最旧的修订版本

2023-12-26

我有一个 33 MB 的大文件,我想永久删除该文件的最旧版本,因此我只保留最新的 X 版本。怎么做?

我的裸存储库因此变得巨大。

我已尝试以下操作..但它完全删除了该文件

git filter-branch --index-filter 'git rm --cached --ignore-unmatch big_manual.txt' HEAD

为了识别我的存储库中的大文件,我使用亚里士多德·帕加尔齐斯 (Aristotle Pagaltzis) 的 git-large-blob https://stackoverflow.com/questions/298314/find-files-in-git-repo-over-x-megabytes-that-dont-exist-in-head.


我认为你走在正确的轨道上git filter-branch你尝试过的命令。问题是您没有告诉它将文件保留在任何提交中,因此它被从所有提交中删除。现在,我认为没有办法directly tell git-filter-branch跳过任何提交。但是,由于命令在 shell 上下文中运行,因此使用 shell 删除除最后 X 个修订之外的所有修订应该不会太困难。像这样的事情:

KEEP=10 I=0 NUM_COMMITS=$(git rev-list master | wc -l) \
git filter-branch --index-filter \
'if [[ ${I} -lt $((NUM_COMMITS - KEEP)) ]]; then
     git rm --cached --ignore-unmatch big_manual.txt;
 fi;
 I=$((I + 1))'

那会保留big_manual.txt在最近 10 次提交中。

话虽这么说,就像 Charles 提到的那样,我不确定这是否是最好的方法,因为您实际上通过删除旧版本来消除 VCS 的全部意义。

您是否已经尝试过优化 git 存储库git-gc and/or git-repack?如果没有,这些可能值得一试。

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

git 删除文件最旧的修订版本 的相关文章

  • 如何使用 libgit2 创建空提交?

    我一直在寻找libgit2 C API 参考 https libgit2 org libgit2 但我不知道如何模仿git commit allow empty libgit2 是否有内置方法来创建空提交 如果没有 git 如何在底层创建一
  • 有关多个远程存储库的 Git 状态

    我有一个脚本 如果我忘记在 40 多个存储库中提交或推送一些代码 它会通过电子邮件向我发送提醒 在我的两个项目中 我遵循了这些帖子中的答案 其中我设置了 git push 来推送到多个存储库 从多个远程位置拉 推 https stackov
  • 如何使用 git hook pre-merge-commit 获取原始合并分支名称

    我正在尝试使用新的 git hook pre merge commit 创建一个特定的脚本 但它没有参数 有什么解决方法可以让我获得正在合并的分支的名称吗 例子 在分支 myBranch 上 我调用 git merge testingBra
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • Git 中的“分支提示”是什么?

    我正在学习 Git 并阅读专业 Git 书籍 https git scm com book en v2 书中和 Stack Overflow 上有时会使用术语 分支提示 但我找不到它的含义 分支提示是分支上的最后一次提交或最近一次提交 基本
  • EGit(Eclipse git 插件)可以使用 SSH 密钥代替用户名和密码吗?

    我需要提交的 git 中央存储库是使用 SSH 密钥配置的 我的用户名是jmglov 但是当我执行 git 操作时 例如git clone 我使用这个配置 jmglov kitiara cat git config remote origi
  • 如何在本地快速拉取拉取请求

    在合并拉取请求之前 我想在本地快速拉取请求并运行测试并测试一些内容 我还不想点击 gihub 合并拉取请求 我以为滑轮会有帮助http ejohn org blog pulley http ejohn org blog pulley 但我收
  • 通过链接进入 git-repo,无需冗长的对话框

    In a directory I have symbolic links into a git administered directory all under Linux Every time I want to e dit such a
  • RuntimeError:模型类 django_messages.models.Message 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

    我正在尝试使用https github com arneb django messages https github com arneb django messages打包我的消息传递内容并尝试了以下操作 pip install git h
  • 当出现错误时如何删除远程分支?

    我尝试过以下命令 但失败了 git push origin next remote error denying ref deletion for refs heads next To blah git remote rejected nex
  • 如何查看 github 的 SSH 密钥?

    我最近收到一封来自 Github 的电子邮件 要求我检查我的 SSH 密钥 请检查您的钥匙并确保您 认出他们 如果您有任何疑问 请拒绝钥匙并 上传新密钥 如何在 ubuntu 11 10 上使用 git 检查我的密钥 您可以按照 GitHu
  • TeamCity 将功能分支推送到主分支

    有没有办法将成功构建的功能分支推送到另一个分支 我想要这样的东西 Git 存储库 Gitorious GitHub 等 分支机构 master 当前项目的代码 质量保证 代码等待 QA 的分支 功能分支 许多远程分支 开发人员可以在其中开发
  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 致命:无法将 HEAD 解析为有效引用

    我正进入 状态fatal Failed to resolve HEAD as a valid ref 每当我尝试承诺时 我努力了 echo ref refs heads master gt git HEAD 但它不起作用 也尝试过 git
  • 我在哪里? *(无分支)

    我已经熟悉了创建 合并和删除分支 我想知道我在哪里 这样我就不会将工作提交到错误的分支 我用git branch a看看我有哪些分支 我认为星号 显示我当前所在的分支 当我得到以下信息时 这意味着什么 no branch master or
  • 如何关闭分支而不将其从 git 的历史记录中删除?

    我想提交并关闭其分支 而不将其从历史中删除 有了水银我会commit close branch then update转到上一个 然后继续工作 有了 git 我很困惑 没有与 Git 中关闭分支完全相同的方法 因为 Git 分支比 Merc
  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被

随机推荐

  • 查找 PHP 服务器的可用端口

    PHP 5 4 带有一个用于开发目的的内置服务器 这是我已经等待了几个月的事情 因为到目前为止 我不得不编写一个 PHP 脚本来侦听传入的连接并处理它们 因为我不想惹麻烦 以及安装实际服务器的开销 我要担心的主要事情是 如何分配端口 在我的
  • 如何将现有的nodejs服务器应用程序连接到Azure SQL数据库

    任何人都可以请建议 我有一个在 azure 上运行的现有 Nodejs 服务器 在 Linux 上运行节点 10 14 项目代码位于 github 上 当我推送更改时 它们会自动推送到 azure 我已经通过Azure门户设置了数据库服务器
  • 为什么 Facebook 淹没了我的网站?

    每个半小时我都会收到大量的请求http www facebook com externalhit uatext php http www facebook com externalhit uatext php 我知道这些请求意味着什么 但这
  • Django url 调试器

    我正在开发一个 Django 应用程序 随着时间的推移 URL 不断增长 我现在有很多这样的视图 由于我做了一些改变 一个视图开始出现故障 当我尝试获取时http example com foo edit profile http exam
  • 将 C 字符串转换为二进制表示形式

    在 ANSI C 中 我们如何将字符串转换为二进制字节数组 所有的谷歌搜索和搜索都给了我 C 和其他而不是 C 的答案 我的一个想法是将字符串转换为 ASCII 然后将每个 ASCII 值转换为其二进制 呃 我知道这是最愚蠢的想法 但我不确
  • React-Native-Video -> 如何保存视频

    我目前正在使用react native video 并通过该包播放HLS 视频流 有人知道如何将视频下载到手机图库吗 查看该包没有任何方法 并且想知道是否还有另一个包可以使用 Thanks 在我的应用程序中 我使用以下命令下载视频RNFS
  • Azure 中的 Web 应用服务每天重新启动多次,日志中没有错误

    我正在 Azure Web 应用服务中运行 ASP Net Web API 2 应用程序 Web 服务每天会重新启动多次 5 6 次 而不会提前发出任何通知或错误消息 我扩展到两个实例 始终不依赖于负载 并且两个实例同时重新启动 我确实设置
  • Sql 服务器表分区 - 我可以跨服务器分配表吗?

    我读过很多网站 指南等 另请注意 我无法测试我所要求的内容 因为没有两台计算机 表分区简单地意味着表被逻辑划分 这样特定范围仅由特定分区处理 从而减少负载并允许并行性 提到分区位于不同的硬盘上 但从未提到分区位于不同的计算机上 那可能吗 例
  • 每行具有不同标准差的 Numpy 数组

    我想要一个NxM矩阵 其中每行中的数字是从不同正态分布生成的随机样本 相同mean但标准差不同 以下代码有效 import numpy as np mean 0 0 same mean stds 1 0 2 0 3 0 different
  • Kendo UI 中单击自定义工具栏时如何调用函数?

    我想创建一个自定义工具栏 这是我的代码 toolbar text Go to Add User Page className k grid custom imageClass k add function createUser alert
  • 不包括程序集版本的 WCF 扩展

    正如所讨论的here http marcgravell blogspot com 2009 11 controlling wcf protobuf net at html 我正在尝试添加 WCF 端点扩展 我已经让它工作了 但我需要包含完整
  • 哪个是支持代码重新加载的简约 python wsgi 开发服务器? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 据我所知 wsgiref 无需重新加载代码 CherryPy 不仅仅是服务器 mod wsgi 所有 apache 开销 Paste https
  • 在 StreamBuilder 中使用选择器(提供程序)时重建不必要的小部件

    我正在使用一个Selector当 Bloc 中的数据发生更改时会重建 这很好 但是当数据发生变化时 它会重新加载整个树 而不仅仅是选择器内的构建器 就我而言 选择器位于 StreamBuilder 内 我需要这个 因为流已连接到 API 因
  • Pandas DataFrame 按两列分组并获取第一个和最后一个

    我有一个DataFrame喜欢跟随 df pd DataFrame id 1 1 2 3 2 value a b a a c Time 6 Nov 2012 23 59 59 0600 6 Nov 2012 00 00 05 0600 7
  • zend框架丢失会话

    我正在尝试在我的 Zend 框架应用程序中实现 Flash 上传器 但我在会话中遇到问题 Flash 不发送任何 cookie 标头 这就是会话丢失的原因 我试图将 sessionId 作为 post 参数发送 并在我的引导文件中添加了 s
  • 从 File.ReadAllBytes (byte[]) 中删除字节顺序标记

    我有一个 HTTPHandler 它正在读取一组 CSS 文件并将它们组合起来 然后对它们进行 GZipping 但是 某些 CSS 文件包含字节顺序标记 由于 TFS 2005 自动合并中的错误 并且在 FireFox 中 BOM 被作为
  • 如何使用点绘制 pandas 数据框的两列

    我有一个 pandas 数据框 想要绘制一列中的值与另一列中的值 幸运的是 有plot与数据帧关联的方法似乎可以满足我的需要 df plot x col name 1 y col name 2 不幸的是 它看起来像在情节风格中 列出here
  • 如何在 Pyspark 中添加带有 min 和 max 函数的新列并按数据分组?

    PySpark 数据框 adobeDF 将新列添加到数据框 from pyspark sql window import Window from pyspark sql import functions as f adobeDF new a
  • DrRacket 中的宏步进器

    在链接上http www ccs neu edu home ryanc macro stepper tutorial html http www ccs neu edu home ryanc macro stepper tutorial h
  • git 删除文件最旧的修订版本

    我有一个 33 MB 的大文件 我想永久删除该文件的最旧版本 因此我只保留最新的 X 版本 怎么做 我的裸存储库因此变得巨大 我已尝试以下操作 但它完全删除了该文件 git filter branch index filter git rm