问题标签 [git-gc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
121538 浏览

git - 你应该多久使用一次 git-gc?

你应该多久使用一次 git-gc?

手册页简单地说:

鼓励用户在每个存储库中定期运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。

是否有一些命令可以获取一些对象计数以确定是否该 gc 了?

0 投票
5 回答
24529 浏览

git - 运行“git gui”时如何跳过“松散对象”弹出窗口

当我运行'git gui'时,我会弹出一个说

然后它建议压缩数据库。我以前做过这个,它将松散的对象减少到大约 250 个,但这并没有抑制弹出窗口。再次压缩不会改变松散对象的数量。

当我们从 Perforce 过渡时,我们当前的工作流程需要大量使用“rebase”,而 Perforce 仍然是规范的 SCM。一旦 Git 成为规范的 SCM,我们将进行定期合并,并且应该大大缓解松散对象问题。

同时,我真的很想让这个“有用的”弹出窗口消失。

0 投票
3 回答
1657 浏览

git - 带有配额的机器上的 git gc

简单的问题,我正在尝试git gc在有配额的机器上运行。在 gc 之前,我的使用量约为 18GB,几乎所有这些都是我克隆的 git 存储库。我的磁盘限制是 25GB。在git gc操作过程中,有足够的临时文件写入磁盘以达到我的限制,从而导致git gc操作失败。

我可以.git/objects/pack/tmp_pack_*在操作失败后删除并恢复到 18GB 的​​使用量,但我真的很想真正完成git gc并恢复一点性能。

是否有一些我可以使用的花哨的选项(或一系列其他 git 命令)不涉及首先将 > 7GB 的临时文件写入磁盘?

0 投票
2 回答
5143 浏览

git - 如何真正删除 git 分支(即删除其所有对象/提交)?

我有一个像

我想删除主题及其上的所有对象。

我记下主题的 SHA ID,然后键入:

在最后一个命令之后,我希望得到一个错误(类似于“不存在的对象 ID ...”或类似的东西)。但是没有错误,并且 gitk 显示与上面相同的树结构?

我错过了什么 - 我认为 gc/prune 应该删除所有无法访问的对象?

0 投票
5 回答
24764 浏览

git - 有没有办法限制“git gc”使用的内存量?

我在共享主机上托管一个 git repo。我的 repo 中必然有几个非常大的文件,现在每次我尝试在 repo 上运行“git gc”时,我的进程都会因使用过多内存而被共享主机提供商杀死。有没有办法限制 git gc 可以消耗的内存量?我希望它可以用内存来换取速度,并且只需要更长的时间来完成它的工作。

0 投票
4 回答
43212 浏览

git - 如何在 Git 远程存储库上触发垃圾收集?

众所周知,我们可以定期运行git gc以打包.git/objects.

但是,对于远程中央 Git 存储库(裸或不裸),在多次推送之后,在myproj.git/objects;下有很多文件。每个提交似乎都会在那里创建一个新文件。

我如何打包这么多文件?(我的意思是远程中央裸存储库上的那些,而不是本地克隆存储库上的那些。)

0 投票
5 回答
18888 浏览

git - 我是否需要在裸仓库上运行 git gc ?

man git-gc里面没有明显的答案,而且我在谷歌上也没有运气(尽管我可能只是使用了错误的搜索词)。

我知道您应该偶尔git gc在本地存储库上运行以修剪悬空对象和压缩历史记录等 - 但是共享裸存储库是否容易受到这些相同问题的影响?

如果重要的话,我们的工作流程是多个开发人员从共享网络驱动器上的裸存储库中提取和推送。“中央”存储库是用git init --bare --shared.

0 投票
3 回答
10371 浏览

git - 使用 Git 强制远程仓库压缩 (GC)

我正在使用 Git 对一系列二进制文件进行版本控制。它们压缩得很好,但是当我推送它们时,我的中央存储库似乎没有压缩。他们吃掉了我相当数量的配额,所以我想看看是否有办法强制远程仓库进行 GC。

这可能吗?我正在开发Project Locker,所以我不相信我可以通过 SSH 访问并自己 GC 存储库。有任何想法吗?谢谢。

0 投票
12 回答
155032 浏览

git - 如何从 git 存储库中删除旧历史记录?

恐怕我找不到像这种特殊情况的任何东西。

我有一个历史悠久的 git 存储库:500 多个分支,500 多个标签,可以追溯到 2007 年年中。它包含约 19,500 次提交。我们希望删除 2010 年 1 月 1 日之前的所有历史记录,以使其更小更易于处理(我们会将历史记录的完整副本保存在存档存储库中)。

我知道我想要成为新存储库根的提交。但是,我无法找出正确的 git mojo 来截断 repo 以从该提交开始。我猜一些变种

涉及移植物是必要的;可能还需要处理我们要单独保留的 200 多个分支中的每一个,然后将 repo 重新修补在一起(我确实知道该怎么做)。

有没有人做过这样的事情?如果重要的话,我有 git 1.7.2.3 。

0 投票
2 回答
2381 浏览

git - 导致 git gc --auto 的所有命令的列表

是否有导致git gc --auto运行的命令的明确列表?git-gc(1) 手册页简单说明:

- 汽车

使用此选项, git gc 会检查是否需要进行任何内务处理;如果没有,它会退出而不执行任何工作。一些 git 命令git gc --auto在执行可能创建许多松散对象的操作后运行。

(重点补充)

我正在组织从 SVN 到 Git 的大规模迁移。绝大多数用户将使用 Windows PC,其中相当一部分是非技术用户。他们将使用 TortoiseGit(因为它与他们已经熟悉的 TortoiseSVN 非常匹配)——我注意到 TortoiseGit 根本不包含任何git gc手动运行的功能。

不能指望非技术人员必须启动“git bash”命令行才能git gc --auto从适当的工作目录运行;并且当我们使用 MsysGit 的“便携式”发行版时,它们将没有“Git GUI Here..”windows shell 上下文菜单快捷方式。

期望随着时间的推移 Git 将主要自我维护是否合理,或者我是否需要尝试制定一种非技术用户友好的调用方法git gc --auto