Orien Daily


Git 的 .git/objects 里到底藏了什么?
大部分人对 Git 的理解停在git add→git commit→git push这个流水线上,但如果你ls .git/objects/看一眼,会发现一堆两级目录——前两位是 SHA-1 的前缀,剩下的在子目录里。这些就是 Git 的全部家当,所谓 content-addressable storage 的实体。
核心只有三种对象。blob 存文件内容,纯原文,连文件名都没有。tree 存目录结构,每条记录指向一个 blob 或子 tree,附带文件名和权限。commit 存快照元信息:一个 tree 指针、零或多个 parent 指针、作者信息和提交消息。所谓分支不过是.git/refs/heads/main里的一行四十字符,指向某个 commit 而已。
值得看的是压缩方式。Git 不存裸文本,而是用 zlib 的deflate压缩。随便找个文件用python -c "import zlib, sys; sys.stdout.buffer.write(zlib.decompress(open(sys.argv[1],'rb').read()))" .git/objects/xx/yyyy…就能还原。你会看到开头是一行 header,格式是类型 长度\0,比如blob 158\0,然后是原始内容。这就是 Git 的寻址方式——对header+content算 SHA-1,前两位做目录名,后 38 位做文件名,内容 zlib 压缩后写入。碰撞概率在可预见的未来可以忽略,所以这个哈希就是对象的唯一身份证。
再往深处走一层:packfile。当你有上千次提交时,松散对象泛滥,git gc会把它们打包成.git/objects/pack/下的.pack和.idx文件。pack 内部对相似对象做 delta 压缩——只存与前一版本的差异,解压时链式还原。这也是为什么git clone大仓库比想象中快,网络传输的是 pack 格式而不是逐个对象。
下次用git cat-file -p或git ls-tree查看对象时,想想这些命令背后不过是对一个 zlib 压缩文件的解压和解析。整个版本控制系统建立在三个朴素的数据结构和一个哈希函数之上,没有数据库,没有服务器——这个设计判断本身就是最大的工程智慧。
🌅 Orien Daily 朝刊【5.19】
1️⃣ Musk诉OpenAI败诉 — 陪审裁定超时效
2️⃣ Anthropic收购Stainless — SDK工具入麾下
3️⃣ Bitwarden改版引争议 — 开源路线生疑
4️⃣ Files.md替代Obsidian — 本地笔记新选
5️⃣ WHO宣布埃博拉紧急 — 美限制旅行
6️⃣ 特朗普叫停对伊打击 — 应卡塔尔请求
7️⃣ Anduril×Meta军用AR — 眼动控无人机
8️⃣ BitLocker暗留后门 — 安全研究员爆料
频道:@OrienDaily
🌃 Orien Daily 晚刊【5.18】
1️⃣ AI不会让流程变快 — HN热议,瓶颈不在速度
2️⃣ 80美元平板改Debian — 低成本Linux工作站
3️⃣ Semble:agent代码搜索 — 比grep少用98%token
4️⃣ Siri改版自动删对话 — 隐私成Apple核心卖点
5️⃣ Musk诉Altman第三周 — 信任成庭审核心争议
6️⃣ 癌症疗法或颠覆自免病 — CAR-T跨界应用突破
7️⃣ CF×Stripe让代理自主开账号 — agent经济首个协议
8️⃣ 日本向英供汉塔病毒药 — 法匹拉韦跨境急救
频道:@OrienDaily


📸 @midzystats #YEJI
“Pocket” by has surpassed 4,000 likes on MelOn.
《Pocket》在 MelOn 上的点赞数已超过 4,000 人。 #YEJI
原文 #黄礼志
📸 @Genius_kor #YEJI
“Pocket” is playful, catchy, and impossible not to loop. Check out the lyrics to the (@ITZYofficial) member’s solo song from on Genius now!
🔗 https://genius.com/Yeji-and-itzy-pocket-lyrics
《Pocket》有趣、朗朗上口,而且不可能不循环播放。立即在 Genius 上查看 (@ITZYofficial) 成员的独唱歌曲的歌词!
🔗 https://genius.com/Yeji-and-itzy-pocket-lyrics #YEJI’s #ITZY #Motto #있지 #예지 #Pocket
原文 #黄礼志
📸 @midzystats #YEJI
“Pocket” by has now surpassed 5,000 likes on MelOn.
《Pocket》目前在 MelOn 上的点赞数已超过 5,000 人。 #YEJI
原文 #黄礼志
被迫改变计划?日语里有个高级说法
在东京写报告或读新闻的时候,你可能想过怎么表达"不得不做某事"。初学阶段学了 しなければならない,但在正式写作和学术论文里,出现频率高得多的是另一个表达:〜を余儀なくされる。
先看例句。実験の失敗により、研究計画の変更を余儀なくされた。翻译就是"因为实验失败,被迫更改了研究计划"。注意结构——変更を余儀なくされる,名词 + を余儀なくされる,"被迫做某事"。余儀(よぎ)两个字拆开看:余是"其他",儀是"方式方法",合起来就是"没有别的办法"。される是被动态,整体传达的是一种不含主观意愿的被迫感——不想改,但情况逼着你改。
这里有个容易混淆的双胞胎: 两个都能用,但学术论文和新闻更爱用被动态的 余儀なくされる,因为日文正式写作天然倾向站在受影响者的立场叙述。
还有一个长得像的形容词:
下次读论文或新闻时留意一下,这个结构出现得比你想象的多。