首页 › weekly › 冲突也能合并:重写Git的人

冲突也能合并:重写Git的人

概述:这一轮的挖法有点反常。本周新星榜被同一个 Jev 梗包了场——前十名大半是同款变体,稍有新意的仓库上线 24 小时内就被各家专栏认领完毕,追风口已无增量。所以本期换了一条矿脉:不追热点,专挖「数字家底」这条安静赛道。七个仓库按一条完整流水线各司其职——写代码有重写版版本控制 jj,管数据有给数据库开分支的 Dolt 和一条命令查全库的 sq,存家底有加密备份引擎 Kopia 与 SQLite 容灾复制 Litestream,守门有提交前密钥安检 ripsecrets,收尾还有磁盘大扫除 kondo。除素材快照外,文中 Star 数均为量级估计(未核验),请以仓库页面实时数据为准。


1. jj-vcs/jj(jujutsu)| 万星级(未核验)| 高频活跃迭代

仓库链接:https://github.com/jj-vcs/jj

一句话定位:一位 Google 工程师下班写出来的 Git 兼容版本控制系统,把「做错事」从事故变成了普通操作。

Git 十年没变过的东西,恰恰是它最劝退的部分:暂存区的心智负担、rebase 中途像走钢丝的紧张感、冲突一来就得立刻解决否则寸步难行。jj 用 Rust 把这套模型整个重写:工作副本本身就是一个提交,你随手改的每个字符都自动被 amend 进去,不存在「忘了 add」这回事;所有历史操作都记在 op log 里,jj undo 一条命令把仓库退回任何一个操作之前,改坏了历史也不会丢。最激进的设计是把冲突当成一等公民:带着冲突的提交可以合法存在、可以继续被推送和合并,等你哪天想通了再回头解决——版本控制第一次变得「可以拖延」。

更务实的是它的共存策略:jj git init --colocate 直接长在现有 Git 仓库上,远端还是 GitHub,同事用 Git 不受任何影响,你单独升级。据项目维护者在社区的公开披露,Google 内部部分团队已在实际使用 jj(未经 Google 官方新闻稿证实);项目也已从个人仓库迁入独立的 jj-vcs 组织,进入多人接力维护状态。

上手难度:⭐⭐⭐⭐(命令都会记,难的是改掉十年 Git 肌肉记忆) 适用人群:被 rebase 折磨过的重度 Git 用户、monorepo 团队。商业方向:企业 VCS 迁移咨询、基于 jj 的代码评审与开发效率工具链——版本控制层十年没人动过,谁先做出配套生态谁吃红利。


2. dolthub/dolt | 万星上下(未核验)| 商业公司持续投入

仓库链接:https://github.com/dolthub/dolt

一句话定位:把 Git 的分支、提交、合并原样搬进数据库——每一行数据都有历史、可回滚、可评审。

代码有 Git 二十年,数据却还是「裸奔」:改坏了谁改的?上周的报表数字为什么对不上?想回滚?对不起,只有昨夜的整库备份。Dolt 直接回答了这个问题:它是一个 MySQL 协议完全兼容的 SQL 数据库,用你现有的 MySQL 客户端就能连上,但 git branch、git commit、git merge 这些动词对表和行同样生效。开个分支改价格表,合并回主干时冲突会精确到单元格级别提示给你;任何一行数据都能追问「这次变更来自哪个提交、谁在几点改的」。

存储层是它真正的护城河:自研的 Prolly Tree(一种概率性 Merkle 树结构)让分支几乎零拷贝、diff 和合并快得像本机操作,这让「每个环境一个分支」在工程上真正可行。配套的 DoltHub 相当于数据界的 GitHub——可以给一份数据发起 Pull Request 请人评审,甚至悬赏众包。背后的 Dolthub 是家正经商业公司,把开源数据库做成生意这件事,它已经跑了五年多。

上手难度:⭐⭐⭐(会 MySQL 就能上手,分支模型照搬 Git 直觉) 适用人群:数据团队、金融/医疗等有审计刚需的行业、做数据众包平台的人。商业方向:版本化数据托管、合规审计底座、给内部工具加上「数据时间机器」的二开需求都现成。


3. kopia/kopia | 近万(未核验)| 长期稳定维护

仓库链接:https://github.com/kopia/kopia

一句话定位:先加密再去重上传的快照式备份引擎,让「备份」从复制粘贴变成一条命令的日常。

大多数人的备份现状:重要目录手动拷进网盘,明文躺在别人的服务器上,重复文件占满空间,想找回上周删掉的版本才发现根本没备。Kopia 把这整套流程工业化:写入前先在本地用 AES-256-GCM 或 ChaCha20 加密,密钥不离开你的手;内容寻址的去重加 zstd 压缩让重复数据几乎不占空间;每次备份是一个快照,配合保留策略自动清理,「恢复到上周三下午」变成一个普通命令。

后端支持面是它最贴心的一点:本地磁盘、S3、B2、GCS、Azure 原生支持,其余几十种云盘通过 rclone 桥接统统接入——你的备份存哪,数据主权就在哪。除 CLI 外还带 KopiaUI 图形客户端和服务端模式,小到个人电脑、大到团队统一备份策略,同一套引擎全覆盖。

上手难度:⭐⭐(图形端装完即用;策略调优再进阶) 适用人群:所有「知道自己该备份但一直没做」的人。商业方向:MSP 托管备份交付、NAS/私有云厂商内嵌、把它当底座做面向小企业的备份服务——数据安全是付费意愿最直白的品类。


4. benbjohnson/litestream | 万星上下(未核验)| 社区组织接续维护

仓库链接:https://github.com/benbjohnson/litestream

一句话定位:给 SQLite 装上的隐形救生艇——持续把数据库增量流式复制到对象存储,坏了随时回到任意一秒。

SQLite 单文件的优雅,配上「服务器一烧全完」的脆弱,是嵌入式和小型服务领域多年的心结;传统主从复制那套重型架构对它又是杀鸡用牛刀。Litestream 的解法极轻:一个后台守护进程,持续监视数据库的 WAL(预写日志),把增量近乎实时地运到 S3 兼容的对象存储;需要恢复时,从存储拉回最新快照加日志重放,可以精确到任意时间点。应用程序零改造,成本就是每月几毛钱的存储费。

作者 Ben Johnson 因为这个项目被云厂商 Fly.io 收入麾下(据其博客),如今项目已交由社区组织接续维护,围绕它的教程和最佳实践沉淀得足够厚。对大量「用 SQLite 做产品」的团队来说,这个仓库就是敢把生产数据放进去的底气来源。

上手难度:⭐⭐⭐(要自己管好对象存储凭据与进程守护) 适用人群:小型 SaaS、边缘设备、本地优先软件的开发者。商业方向:为 SQLite 系产品做灾备托管增值服务;边缘计算与离网设备的数据保险,都是还没有霸主的空档。


5. sirwart/ripsecrets | 数百星(未核验)| 低频稳定

仓库链接:https://github.com/sirwart/ripsecrets

一句话定位:只干一件事的密钥安检员——在你按下 push 之前,把 API key 和私钥拦在本地。

密钥泄漏的开场白永远是同一句:调试图快忘了自己把测试密钥写死在代码里,一推上远端就成了漏洞库里明码标价的商品。市面上的扫描器大多面向安全团队做全量历史回扫,重、慢,塞不进开发者的日常。ripsecrets 反其道而行:Rust 写的单二进制,专为 pre-commit 场景设计——只扫将要提交的新增改动,速度快到毫无感知,规则覆盖云厂商访问密钥、私钥块等常见形态(据仓库 README)。全量回扫交给重型工具,它只负责把守「新泄漏」这道最便宜的闸门。

它的价值在工程习惯层面:一个团队把同一个 ripsecrets 配置统一进仓库钩子,密钥事故率是从根上降的,而不是靠事后追责。Star 不高,但它解决的问题几乎每个团队都踩过。

上手难度:⭐⭐(装进 pre-commit 钩子即完成部署) 适用人群:所有往 Git 推代码的人。商业方向:企业级开发安全套件里的「提交前安检」组件、给外包交付团队做的安全基线配置服务,都是顺手就能接的活。


6. b0o/sq | 千星上下(未核验)| 持续迭代

仓库链接:https://github.com/b0o/sq

一句话定位:把 jq 的魔法用到数据库上——一条命令,让 MySQL、Postgres、SQLite 和 CSV 文件在同一根管道里说话。

数据生活里最常见的碎片化场景:用户表在 Postgres、配置在 MySQL、一份导出的 CSV 躺在下载目录,想把它们对齐看一眼,得开三个客户端、导两趟数据。sq 的思路是把 jq 那套「选地址、过管道」的语法直接搬到数据源上:@库名.表 定位一张表,后面接 filter、切片就像操作 JSON 数组,输出可以直接落成 JSON 继续喂给 jq 或脚本。查询 SQLite 文件和 CSV 不需要起任何服务,装完即查。

它不做重型 BI,也不抢 IDE 的活,只把「跨源取数」这个高频小动作做到零摩擦——典型的单一痛点、即装即用。Star 还在千星量级,正属于「现在上车还算早期用户」的品类。

上手难度:⭐⭐(会 jq 或 SQL 任意一样即可) 适用人群:天天和数据杂务打交道的工程师、做自动化脚本的人。商业方向:内网报表自动化、给运营岗做只读查询门面,或嵌入自家产品当数据查询组件。


7. tbillington/kondo | 千星上下(未核验)| 社区维护

仓库链接:https://github.com/tbillington/kondo

一句话定位:开发者磁盘的断舍离管家——扫出全机散落的编译垃圾,只删可再生的,源码一根毫毛不动。

每个开发者都有一块说不清去哪了的硬盘:三年前打开过的项目留下几个 GB 的 node_modules、Rust 项目的 target、各种 build 与缓存目录,散落在家目录的每个角落,不敢乱删又懒得逐个清。kondo 用 Rust 并行扫描整个磁盘,按语言识别项目类型,逐项列出「这个项目可以回收多少 GB」;确认后执行清理,删掉的只有依赖和编译产物这类一条命令就能重新生成的目录,源码与配置原地不动。先看账单、再动手,整个过程心里有数。

它是本期最没有技术光环的一个,却是从安装到见效距离最短的一个——对常年吃灰的旧开发机,一次扫描常常能白捡几十上百 GB。

上手难度:⭐(扫一遍、确认、删,三步完事) 适用人群:所有开发机磁盘飘红的人。商业方向:单独卖价值有限,但很适合内嵌进开发者工具箱、企业终端治理脚本,当「磁盘体检」组件。


本期横评

仓库 类型 Star(量级,未核验) 上手难度 适用场景
jj-vcs/jj 版本控制 万星级 ⭐⭐⭐⭐ 替代/共存 Git,重历史操作
dolthub/dolt 数据库 万星上下 ⭐⭐⭐ 数据分支协作、审计回滚
kopia/kopia 备份 近万 ⭐⭐ 加密去重快照备份
benbjohnson/litestream 容灾 万星上下 ⭐⭐⭐ SQLite 流式复制与恢复
sirwart/ripsecrets 安全 数百星 ⭐⭐ 提交前密钥拦截
b0o/sq 查询工具 千星上下 ⭐⭐ 跨数据源 jq 式取数
tbillington/kondo 磁盘清理 千星上下 ⭐ 编译垃圾大扫除

本期全景

mindmap
  root((数字家底自助流水线))
    写
      jj 重写版本控制
      sq 跨源一条命令查
    存
      Dolt 给数据开分支
      Kopia 加密去重备份
    守
      Litestream 容灾复制
      ripsecrets 密钥安检
    清
      kondo 编译垃圾回收

本期之最

参考来源

  1. jj-vcs/jj — jujutsu 版本控制主仓库,工作副本即提交、op log 与冲突一等公民等特性出自其 README 与文档
  2. dolthub/dolt — Dolt 版本化数据库主仓库与 DoltHub 数据托管平台
  3. kopia/kopia — Kopia 加密备份引擎主仓库
  4. benbjohnson/litestream — Litestream SQLite 流式复制主仓库,作者加入 Fly.io 一事据其个人博客
  5. sirwart/ripsecrets — 提交前密钥扫描工具主仓库
  6. b0o/sq — jq 风格跨数据源查询工具主仓库
  7. tbillington/kondo — 开发项目清理工具主仓库

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入