加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

假如非得相识下 GIT 体系… – 实践篇

发布时间:2018-09-20 18:21:57 所属栏目:移动互联 来源:野兽
导读:【新品产上线啦】51CTO播客,随时随地,碎片化进修 git的界说是一个内容寻址文件体系。内容、寻址、文件、体系,该来的总会来的 本文旨在通过实践来先容.git文件夹中的目次及文件成果,属git基本常识。但在此基本上可办理各git行使进程中也许碰着的题目,如

git gc ( garbage collect )呼吁将会网络全部疏松工具并将它们存入 pack,归并这些 pack 进一个大的 pack,然后将不被任何 commit 引用而且已存在一段时刻 (数月) 的工具删除,除此之外还会将全部引用 (references) 并入一个单独文件(上面有提到跟着各类操纵,.git下还会发生更多文件夹,.git中的packed-refs文件夹就是这时辰发生的)。该呼吁也许通过修改设置中的 gc.auto 和 gc.autopacklimit 来调解操纵阈值。留意:git gc 挪用的也是 git prune ,若有需求也可存眷这个呼吁。

至于”info文件夹是干嘛的?”这个题目还未知… 官网的描写也没看懂,也没查到可能在项目中现实呈现这个文件夹有存在什么文件,要么等碰着再说?

至此git工具中的三个工具已经知道是咋回事了,还剩个tags工具,简朴先容下。

tags工具凡是也是一个commit工具,指的是一个指定了开拓者可读名称的一个非凡工具,若有必要也可通过 git cat-file 来理会试探。

其间相关大抵如下:

  1. |- commit       aaaaa… 
  2.     |- tree       abbbb… 
  3.         |- blob       acccc… (也许是这次修改的) 
  4.         |- blob       adddd…(也也许是前次修改的) 
  5.         |- tree        aeeee…   
  6.             |- blob        affff… 
  7.   
  8. |- commit        bbbbb… 

相关图的话,这个是git官网的… 和上面的布局是一样的。

假如非得相识下 GIT 体系… – 实践篇

基于objects的先容再回过甚来看看”内容、寻址、文件、体系”便较量清楚了:以git工具作为内容,通过独一的校验和寻址,文件情势存储的一个版本节制体系。

相识完这些,首要照旧但愿可以或许运用到现实出产中来办理题目。如 “项目中.git文件为什么这么大?怎么处理赏罚?”

也许的处理赏罚方案:

1. 执行 git gc ,假如压缩后能到达预期结果,则不做过多处理赏罚

2.针对汗青记录中对某些大文件的引用,则删除对应引用的工具,操纵如下

  1. git gc 
  2. git count-objects -v 
  3. git verify-pack -v .git/objects/pack/pack-(SHA-1).idx | sort -k 3 -n | tail -5 
  4. # 前面用过了git verify-pack,可知第三列信息暗示的文件巨细,这里用tail取前5个较大文件的记录 
  5. git rev-list --objects --all | grep (SHA-1) 
  6. # 行使 git rev-list --objects -all 来查察指定 (SHA-1) 工具信息 
  7. # ce1fed3fdbaf12e816e3028055f9feee57b33b45 xxx.mp4  好比是个视频文件 
  8. git log --pretty=oneline --branches -- xxx.mp4 
  9. # 找出哪些 commit 修改/操纵了这个文件 
  10. # 94cbe08e... add xxx.mp4 
  11. git filter-branch --index-filter 'git rm --cached --ignore-unmatch xxx.mp4' -- 94cbe08e^.. 
  12. # 删除文件引用,rewrite 信息... 
  13. rm -rf .git/refs/original 
  14. rm -rf .git/logs/ 
  15. git gc 
  16. # 删除 .git/refs/original 和 .git/logs/ ,处理赏罚个中对xxx.mp4文件仍存在的引用,之后repack客栈 
  17. git count-objects -v 
  18. # 搜查下操纵后文件巨细,可能直接在.git目次下执行 du -h -d 1 查察1级目次/文件的巨细 

3.若照旧难处理赏罚,可能欠甜头理赏罚,可能不想删除大文件的引用,则备份一份.git,然后初始化git客栈,操纵如下

  1. # 撤除备份操纵,备份操纵行使者自界说 
  2. rm -rf .git 
  3. git init 
  4. git remote add origin xxx.git  
  5.  
  6. # 从头指向新的长途客栈地点,也可按照上文所说修改config文件来指定 

参考

关于git hooks,参考Customizing-Git-Git-Hooks

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

关于更具体的.git文件夹,参考 Gitrepository-layout-objectsinfo

https://git-scm.com/docs/gitrepository-layout#gitrepository-layout-objectsinfo

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读