从 git 存储库中删除工作文件以节省空间

2024-03-30

我的磁盘上有许多 GitHub 项目,但其中许多项目并未得到积极使用。

我想暂时删除工作文件,因为它们无论如何都存储在提交历史记录中,因此我可以稍后检索它们。

删除文件的最简单方法是rm -rf *但它有很多缺点:

  • 它不会删除点文件,例如.gitignore
  • 如果我晚点回来的话git status抱怨大量已删除的文件。我必须弄清楚是否应该进行这些删除,或者我是否只是删除它们以暂时节省空间。

删除工作文件的快速简便方法是什么?有没有办法干净利落地做到这一点?


创建一个空分支似乎工作得很好:

  1. 检查所有文件是否已安全提交到分支(例如“master”或“develop”分支)。
  2. 创建一个空分支。我将其称为“空”。

    git checkout --orphan empty
    
  3. 但这并没有删除文件。手动执行此操作:

    git reset --hard
    
  4. 该分支尚未真正存在。进行初始提交以确认:

    git commit --allow-empty -m 'Empty commit'
    

现在您的所有文件都消失了,并且您位于体现这种情况的分支上。


这个过程的好处是:

  • 它使用 git 自己的机制。不存在令人困惑的脏状态。
  • 当你看到分支名称时就清楚发生了什么。
  • 您可以轻松切换回主模式git checkout master
  • 您可以轻松地再次切换回空分支git checkout empty

缺点:

  • 初始过程需要 3 个命令。
  • 如果您不熟悉分支,或者不知道自己所在的分支,当您返回到文件夹时,您可能会想知道所有文件都去了哪里!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 git 存储库中删除工作文件以节省空间 的相关文章

  • 使用 gitignore 嵌套存储库。

    我想嵌套 2 个 git 存储库 我一直在阅读子模块 有一段时间我认为它很棒 我想我可能想要其他东西 这是我的情况 首先 我想我应该提到我的所有服务器都托管网站 并以 staging domain com 和 domain com 实时 模
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Git 的企业采用率?

    最近一些同事之间进行了一场讨论 在当今的软件行业中 如何存在两个不同的世界 面向自由软件 公司的 Question Git 在企业环境中的使用情况如何 您在企业环境中使用 Git 的体验如何 无论如何 我们在工作场所使用 git 每个人都对
  • 如何使用JavaScript估算字符串的磁盘大小?

    我需要尝试估计DISKJavaScript 中文本字符串 可以是原始文本或图像 音频 等的 Base64 编码字符串 的大小 我不知道如何估计这个 当谷歌搜索时我唯一能找到的是 length所以我想 StackOverflow 上也许有人知
  • 具有单个子模块的多个存储库

    我已经找了一段时间但没有找到答案 也许我不知道该看什么 我们有一个主库 它本身就是一个存储库 我们称之为 Lib 它包含我们的大部分模块和子模块 我们还假设它的大小为 2GB 现在我们有很多项目 例如 ProjA ProjB ProjC 每
  • 我应该把 .gitignore 放在哪里才能影响所有项目?

    我应该在哪里放置一个 gitignore文件以便我的所有项目都使用这些设置 我尝试了各种文件夹 只有将其放入项目文件夹中才能使其正常工作 但是设置 当然 仅应用于该项目 而不是我的其他项目 git 包含一个 全局 配置选项 可以告诉它在启动
  • GIT:提交时“致命:无法写入 new_index 文件”

    当我尝试将更改提交到本地存储库时 我收到以下消息 致命 无法写入 new index 文件 As this 线程说明 http luhman org blog 2010 04 05 git fatal unable write newind
  • 如何创建名称中带有正斜杠的标签

    当我已经有了类似的标签时 有什么方法可以创建名称中带有正斜杠的 git 标签吗 假设我有 1 16 0 标签 并且我想创建 1 16 0 1 0 0 标签 git tag 1 16 0 1 0 0 error refs tags 1 16
  • 使用 html5 分块上传文件

    我正在尝试使用 html5 的文件 API 分块上传文件 然后在服务器端用 php 重新组装它 我正在上传视频 但是当我在服务器端合并文件时 大小增加了 并且它变成了无效文件 请注意 以下 html5 代码仅适用于 chrome 浏览器 在
  • 有没有办法导入/导出容器绑定脚本

    我有一个插件 它使用 appscripts gs 以及 html js 和 css 文件 目前我们所做的是我们有一个参考 Google 文档 其中有一个脚本项目包含所有这些源代码 但是除了手动复制和粘贴之外 没有办法在 GIT 中保留源代码
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • 如何仅根据拉取请求在 Jenkins 中运行阶段?

    我现在有一个基于 Jenkinsfile 的管道 其中包含多个阶段 每次提交到 Github 时都会由 webhook 触发 我想在每次提交时保持 构建 和 单元测试 阶段运行 但仅在分支准备拉取请求时运行 集成测试 阶段 我想要的是 st
  • npm install 的问题(Angular)

    今天我尝试创建一个新项目 所以我使用这个命令 ng new NAME style less 并在我的cmder中弹出错误和警告 所以我卸载了 Roaming npm 和 npm cache 中的节点和文件 然后我安装了node并再次下载cm
  • Jmeter 和 Bitbucket 服务器负载测试

    我是 Jmeter 的新手 我有一个本地托管的 Bitbucket 服务器 有时 当 Bamboo plan 触发并发 git 克隆操作时 会发现 Bitbucket 服务器变得缓慢 无响应 我必须重新启动服务 我想通过对另一个本地创建的
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 如何在多个不同的分支上工作,以便我可以在它们之间轻松切换?

    有没有办法在 GIT 中处理同一个文件但不同的功能 分支 我确信有办法 但最简单的方法是什么 我不想隐藏我的更改 因为这很麻烦 借助 SVN 我能够将 2 个独立的分支作为 2 个不同的实体进行工作 无需任何干预 并且可以轻松在两者之间切换
  • 如何在 EGit 中创建正确的新本地和远程分支组合?

    我想在 Egit 中执行以下操作 git checkout b newbranch git push u origin newbranch 这给了我一个新的本地分支 将其推送到上游服务器并创建正确的跟踪参考 我如何在 Egit 中做同样的事
  • Gitlab 备份错误:包对象因信号 9 死亡

    我有一个存储库 有 2 个分支 大小为 3 5GB 每个分支大约 1 5GB git 本身就有 700MB 这是错误 备份失败 失败的 失败 opt gitlab embedded bin git git dir mountdata git
  • 如何从 Git 存储库中删除选定的提交日志条目,同时保留其更改?

    我想从线性提交树中删除选定的提交日志条目 以便这些条目不会显示在提交日志中 我的提交树看起来像 R A B C D E HEAD 我想删除 B 和 C 条目 以便它们不会显示在提交日志中 但应保留从 A 到 D 的更改 也许通过引入单个提交

随机推荐