git gc的使用

命名

git-gc  - 清理不必要的文件并优化本地存储库

概要

git gc [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] [--force]

描述

在当前存储库中运行许多内务处理任务,例如压缩文件修订(以减少磁盘空间并提高性能)并移除可能由之前git add调用创建的不可达对象。

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

一些git命令可能会自动运行git gc; --auto详细信息请参阅下面的标志。如果您知道自己在做什么,并且所有您想要的都是永久禁用此行为而无需进一步考虑,请执行以下操作:

$ git config --global gc.auto 0

选项

--aggressive

通常git gc运行速度很快,同时提供良好的磁盘空间利用率和性能 此选项将导致git gc更积极地优化存储库,但花费更多时间。这种优化的效果是持久的,所以这个选项只需要偶尔使用; 每隔几百个变更集左右。

--auto

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

如果存储库中的松散对象太多或包装太多,则需要进行内务处理。如果松散对象的数量超过了gc.auto配置变量的值,则所有松散对象都将使用组合到一个包中git repack -d -l。将值设置gc.auto为0将禁用自动填充松散物体。

如果包装数量超过了价值gc.autoPackLimit,那么现有包装(标有.keep文件的包装除外)将通过使用-A选项合并到一个包装中git repack。设置gc.autoPackLimit为0将禁用自动合并包装。

--prune=<date>

修剪比日期更旧的松散对象(默认为2周前,可由配置变量覆盖gc.pruneExpire)。--prune =不管年龄大小,都修剪松散的物体,并且如果另一个进程同时写入存储库,则会增加腐败风险; 请参阅下面的“注意事项”。--prune默认打开。

--no-prune

不要修剪任何松动的物体。

--quiet

取消所有进度报告。

--force

git gc即使可能有另一个git gc实例在此存储库上运行,也强制运行。

组态

可选配置变量gc.reflogExpire可以设置为指示每个分支的reflog中的历史条目应该在此存储库中保持可用的时间。该设置表示为一段时间,例如90 days3 months。它默认为90 days

可选配置变量gc.reflogExpireUnreachable可设置为指示不属于当前分支的历史请求日志条目在此存储库中保持可用的时间。这些类型的条目通常是由于使用git commit --amendgit rebase而创建的,并且是在修改或重新发生之前的提交。由于这些更改不是当前项目的一部分,因此大多数用户都希望尽快过期。该选项默认为30 days

上述两个配置变量可以赋予一个模式。例如,这会将非默认到期值设置为远程跟踪分支:

[gc "refs/remotes/*"]reflogExpire = neverreflogExpireUnreachable = 3 days

可选的配置变量gc.rerereResolved指示您先前解决的冲突合并记录的保存期限。这默认为60天。

可选的配置变量gc.rerereUnresolved表示保留了多久没有解决的冲突合并记录。这默认为15天。

可选的配置变量gc.packRefs确定是否git gc运行git pack-refs。可以将其设置为“notbare”,以便在所有非裸回购库中启用它,或者可以将其设置为布尔值。这默认为true。

可选配置变量gc.aggressiveWindow控制在指定--aggressive选项时优化存储库中对象的增量压缩所花费的时间。值越大,优化增量压缩花费的时间就越多。有关更多详细信息,请参阅git-repack [1]中--window'选项的文档。这默认为250。

同样,可选的配置变量gc.aggressiveDepth控制git-repack [1]中的--depth选项。默认值为50。

可选的配置变量gc.pruneExpire控制未修剪的松散对象在修剪之前必须经过多久。默认值是“2周前”。

注意

git gc尽量不要删除在存储库中任何位置引用的对象。特别是,它不仅会保存当前一组分支和标记所引用的对象,还会保留由索引引用的对象,远程跟踪分支,git filter-branch refs / original /中保存的引用或reflogs(可引用分支中的提交后来修改或倒带)。如果您希望某些对象被删除而不是,请检查所有这些位置,并决定在您的情况下删除这些引用是否有意义。

另一方面,当git gc与另一个进程同时运行时,可能会删除另一个进程正在使用但尚未创建引用的对象。这可能会导致其他进程失败或者可能会损坏存储库,如果其他进程稍后添加对已删除对象的引用。Git有两个功能可以显着缓解这个问题:

  1. --prune保留修改时间比日期更新的任何对象以及可从其访问的所有对象。

  1. 将对象添加到数据库的大多数操作都会更新对象的修改时间(如果该对象已存在,以便应用#1)。

然而,这些功能并不能提供完整的解决方案,因此,同时运行命令的用户必须忍受一些腐败风险(实践中似乎很低),除非他们关闭自动垃圾收集git config gc.auto 0

Hooks

git gc --auto命令将运行该pre-auto-gc钩子。有关更多信息,请参阅githooks [5]。

转载地址:Git中文开发手册

git gc 的使用相关推荐

  1. git gc error: failed to run repack message

    https://stackoverflow.com/questions/18563246/git-gc-error-failed-to-run-repack-message

  2. Auto packing the repository in background for optimum performance. See git help gc for manual hous

    git gc 有时候当你运行一些git命令(比如git pull)的时候,会有如下提示: 1 2 Auto packing the repository for optimum performance ...

  3. git乌龟拉取代码出现See git help gc for manual housekeeping..

    解决办法: 1.直接在此处打开命令窗口,然后使用输入git pull ,如果出现找不到文件, 就关闭开发工具,等待一会再重试. 2.实在不行就输入命令. 1.git fsck (等待完成后执行2) 2 ...

  4. See git help gc for manual housekeeping

    今天使用git遇到一个奇怪的问题,在衍合代码的时候长时间衍合不成功,并且报下面错误 Auto packing the repository in background for optimum perf ...

  5. 【转载】Git 常用命令大全

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  6. Git详解之九 Git内部原理

    以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...

  7. git管理大项目或者大文件

    git 是追踪代码库演进的最佳选择,并且它能让你与你的同事间高效协作.当你想要追踪的库非常巨大时会发生什么? 在这篇文章里,我会尝试着给你一些想法和技巧来恰当地处理不同种类的大仓库. 两种大代码库 如 ...

  8. Git从入门到放不下

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:gafish https://github.com/gafi ...

  9. 这有一份 Git 日常使用清单,你需要吗?

    作者:echozh 链接:https://juejin.im/post/5d5b4c6951882569eb570958 前置条件: 在正式开始之前,我们需要先确定几个概念.下面所提到的 master ...

  10. Git中级用户的25个提示

    本文转载自图灵社区用户青年的翻译文章. 我使用 Git 大约已经有18个月时间,自认为能很好地驾驭它了.但是当我们请到 GitHub 的 Scott Chacon 来到 LVS 公司(一个博彩/游戏软 ...

最新文章

  1. bash中case的用法
  2. ubuntu创建vim php文件,在ubuntu 上配置vim的php开发环境
  3. Android OkHttp的使用心得
  4. jQuery的Password Validation插件
  5. Linux 之三 静态库及动态库的编写和使用
  6. 山西上党残疾男子“只”手脱贫 带领村民增收
  7. Vue 导入文件import、路径@和.的区别
  8. oracle删除排序数据库,数据库的数据操作:增删改查和排序
  9. Linux程序文件状态,linux 文件状态标识和IO操作方式
  10. 破解sourceInsight4
  11. 广州有这么一个无聊的人
  12. Java集成云打印机(芯烨云)——文档篇
  13. WinForm 去掉DataGridView最后一行的空白行,删除空白行
  14. PPT里如何做流水图
  15. 任务分解法[WBS]
  16. 英伟达 jetson xavier agx 开发(1)开发环境搭建
  17. 加权voronoi图 matlab,加权voronoi图matlab
  18. 无主键mysql表创建主键
  19. android pos机对接微信刷脸支付时如何做到双屏异显-2020年10月9日
  20. 爪哇国新游记之十一----用异常控制流程

热门文章

  1. python numpy模块玩转矩阵与科学计算
  2. Python模块受欢迎排行榜Top200
  3. 【数据结构】树状数组效果讲解
  4. Php wordpress安全性,使用 .htaccess 提高 WordPress 的安全性和可用性
  5. 求素数及素数表的获取
  6. mac 2k显示器字体发虚_亲身实践:Mac mini 搭配戴尔显示器体验
  7. 125w短波通信距离_短波通信在消防应急救援通信中的应用探讨
  8. bat脚本监控tomcat并启动_windows使用批处理发布web到tomcat并启动tomcat脚本分享
  9. rocketmq顺序消费问题
  10. mongoTemplate.aggregate() 聚合查询,关联查询