git本地仓库,如果长时间不进行清理,几个月以后的某一天,可能拉取代码的时候突然提示你  git Auto packing the repository in background for optimum performance. See "git help gc" for manu...

查资料,原来是自己本地一些 “悬空对象”太多(git删除分支或者清空stash的时候,这些其实还没有真正删除,成为悬空对象,我们可以使用merge命令可以从中恢复一些文件),话不多说,先上解决方法吧~!

解决方法: 
1.输入命令:git fsck --lost-found,可以看到好多“dangling commit” 
2.清空他们:git gc --prune=now,完成

原理解析:

Git的底层并没有采用 CVS、SVN 底层所采用的那套增量式文件系统,而是采用一套自行维护的存储文件系统。当文件变动发生提交时,该文件系统存储的不是文件的差异信息,而是文件快照,即整个文件内容,并保存指向快照的索引。这种做法,提高 Git 分支的使用效率;但也容易导致代码仓库中内容重复程度过高,从而仓库体积过大。当遇到这种情况时,或者需要将仓库推送到远程主机时,就需要Git中的gc(garbage collect)功能,也就是垃圾回收功能。

大体来说,当运行 "git gc" 命令时,Git会收集所有松散对象并将它们存入 packfile,合并这些 packfile 进一个大的 packfile,然后将不被任何 commit 引用并且已存在一段时间 (数月) 的对象删除。 此外,Git还会将所有引用 (references) 并入一个单独文件。

就细节而言,Git做了这几件事:

  • pack_refs 过程
  • reflog expire 过程
  • repack 过程
  • prune 过程
  • rerere 过程

pack_refs 过程相当于执行"git pack-refs --all --prune",它会将$GIT_DIR/refs目录下的所有heads和tags打包成一个文件并保存为$GIT_DIR/packed-refs下。

reflog expire 过程相当于执行"git reflog expire --all",它会将删除所有超过期限而且没有被refs涉及的reflog条目。

repack 过程相当于执行"git repack -d -l",一般情况下还会包括"-A"选项,它会将所有未被包含在一个pack的松散对象连结成一个pack,也会将现有的pack重新组织为一个新的更有效率的pack,并删除冗余的pack(如果她们中存在不可达的松散对象,会先把这些对象释放出来)。

prune 过程相当于执行"git prune --expire",他会删除所有过期的、不可达的且未被打包的松散对象。

rerere 过程相当于执行"git rerere gc",这种情形下似乎没什么用。

git长时间未清理无法拉取代码( git Auto packing the repository in background for optimum performance)相关推荐

  1. 解决git拉取代码时报:Auto packing the repository in background for optimum performance

    问题:git本地仓库,如果长时间不进行清理,拉取代码的时候突然提示: Auto packing the repository in background for optimum performance ...

  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创建新的分支无法拉取代码的问题

    有时候创建分支之后执行git pull会出现 $ git pull There is no tracking information for the current branch. Please sp ...

  4. 登陆用友服务器超时未响应,用友T3软件10.8plus1普及版服务器提示“客户端已经较长时间未连接加密服务器,超时2880秒,请退出产品重新登录”?-用友T3...

    文章摘要:用友T3软件10.8plus1普及版服务器提示"客户端已经较长时间未连接加密服务器,超时2880秒,请退出产品重新登录"?10.8plus1普及版服务器提示"客 ...

  5. 原生js制作页面长时间未操作退出登录

    昨天一个同事问我,进入到一个页面后,这个时候不进行任何操作,然后15分钟后就自动退出登录,这个功能怎么实现? 电脑进入待机状态原理 说到这个问题,我觉得这个问题 和 电脑长时间未操作进入待机状态是一个 ...

  6. t3服务器端文件未找到53,用友T3软件客户端已经较长时间未连接加密服务器,超时2880秒,请能出产品重新登录-用友T3...

    文章摘要:用友T3软件客户端已经较长时间未连接加密服务器,超时2880秒,请能出产品重新登录客户端已经较长时间未连接加密服务器,超时2880秒,请能出产品重新登录 问题模块: 其他关键字:连接超时问题 ...

  7. 百度贴吧——因百度账号策略调整导致长时间未登录的账号(最后登录在2017年6月1日以前)网页端无法登陆、移动端异常解决方案

    问题描述 尝试登录一个最后登录在2017年6月1日以前的百度账号时, 网页端在完成登录程序以后,仍然没有登录状态. 移动端APP在完成登录程序后,可以进行一般操作(查看.发布等),但是不能进行账号安全 ...

  8. 【Python】SQLAlchemy长时间未请求,数据库连接断开的原因、解决方案

    这个问题好像和长时间连接数据库但不打开网页时,报错lost connection是一个原因 问题: 写了一个基于apscheduler的定时任务,里面的任务使用了sqlalchemy,大致如下: sc ...

  9. vue 上次登录时间_vue实现登录之后长时间未操作,退出登录

    效果如下: vue实现用户登录系统之后,长时间未操作,提示登录超时,直接退出登录,跳转至登录页面. app.vue: import {mapActions } from 'vuex'; import ...

最新文章

  1. 指针小白:修改*p与p会对相应的地址的变量产生什么影响?各个变量指针的长度为多少?...
  2. 【操作系统】Classical Problems of Synchronization-信号量机制
  3. POJ 2299 Ultra-QuickSort(树状数组+离散化)
  4. Could not write file: C:\......\.classpath
  5. MVC 之 属性详解
  6. linux ntfs 速度慢,将U盘磁盘格式改成NTFS解决u盘复制速度慢问题
  7. VC2005 C++入门记
  8. python面试代码题_常见python面试题-手写代码系列
  9. TFS的站点中无法找到Report服务器
  10. 区块链软件:区块链的迅猛发展
  11. [开发笔记]-VS2012打开解决方案崩溃或点击项目崩溃
  12. cssd oracle,Oracle RAC /etc/init.d/init.cssd startcheck
  13. 使用NodeJS调用Dubbo工程
  14. python正则表达式应用
  15. 项目管理第十章项目沟通管理
  16. python使用有道智云翻译API
  17. Barrett reduction
  18. Milking Cows /// 区间计数 离散化排序 oj10105
  19. 干翻华为才有年终奖,“性感”小米发布MIX3,滑盖全面屏只要3299元
  20. 为Excel工作表单元格命名的两种方法

热门文章

  1. 什么是HTML 实体?
  2. Media Foundation
  3. c语言程序能在android,android环境下编译并运行C语言程序
  4. c语言程序在cmd,在windows命令行编译运行c程序
  5. Jetson Xavier NX (16) -- Jetson IIC: PCA9685
  6. linux的centos系统新建多个桌面(多个workspace)
  7. 能量冲击波神秘魔术动作特效音效Arcane Forces第二套 MAGIC - ARCANE FORCES CONSTRUCTION KIT
  8. (毕业设计)python个人健康自助记录查询系统 152015
  9. python -v 和-V
  10. Android widget桌面小部件