hqwhqwhq's blog

这个博客将会被长期维护

0%

test in 2020-1-19

2021.1.11

今天把Git的原理简单看了一下,没想到那么简单(大道至简的道理吧)。记一下小的关键点

  1. Git的版本控制是使用Git 数据库
  2. 版本更新不是基于Diff的保存,就是简单的新的版本的快照
    1. Git基于内容来进行Hash,但是有一个tree来管理目录结构,所以应该说Git基于版本和目录位置进行控制

Q&A

  1. 版本快照会不会爆空间?

    理论上可能会?不过Git的版本快照不是简单地保存文件,而是进过了一系列压缩之类的,所以占用空间非常少(所以Git的核心是压缩算法吗?)

  2. 如果修改了文件名,Git如何识别?

    如果是由Git控制的系统,那么打开以后的每一个文件都是Git上一次的快照,所以Git系统已经定位了parent version,不用担心track不到文件名修改

    更重要的原因,Git引入了tree对象用来track文件目录(这样可以定位每一个add remove的文件,即使Git是基于内容来hash的)

阅读全文 »

  1. 单线程 异步IO
  2. module解析路径是: 子->父->父的父

Add proxy for git:

1
2
git config --global http.proxy 'socks5://127.0.0.1:yourPort'
git config --global https.proxy 'socks5://127.0.0.1:yourPort'

Background

这个博客内容将会长期被维护

Tricks

  1. hexo deploy 只会把 /public 里面的内容发布到相应的branch,这样没办法维护笔记的源文件

    solution: 使用 main 分支维护笔记源文件及Hexo配置,使用 hexo_display 分支维护 /public 内容(即真正显示在页面上的内容)

  2. Suuuuuper recommand tool: Travis CI(Continuous Integration) 持续集成工具,这东西帮助把 main 分支上的东西自动 generate && deployhexo_display 分支