主要观点:Jujutsu 是一个新的版本控制系统,类似于 Git 前端,底层数据仍存储在 Git 中,其理念是“一切都是提交”,工作副本状态始终是一个提交,带来了很多便利。
关键信息:
- Jujutsu 文档前期细节过多,有替代教程但风格不符合需求,建议自己尝试写介绍/教程。
- 概述:可将 Jujutsu 视为新 Git 前端,其与 Git 的区别在于交互方式和概念模型,使用时应暂放 Git 知识但可与 Git 生态系统互操作。
- 大理念:版本控制系统目的是跟踪代码历史,Jujutsu 中工作副本状态即提交,带来多种便利,如
jj diff
显示提交差异等。 - 基本工作流程:
jj git init --colocate
创建.jj
目录,jj
命令显示最近提交,jj desc -m
设置描述,jj new
创建新提交。 - 迭代更改:可直接编辑未提交的更改或使用“squash 工作流”创建新提交。
- 移动和编辑历史:
jj edit <changeid>
切换工作副本到现有更改,直接在历史提交上操作。 - 冲突:历史操作会隐式变基,可能导致冲突,jj 有独特处理方式,冲突解决后相关提交会重新变基。
- 分支:Jj 没有命名分支,通过提交描述跟踪工作,与 Git 互操作时需要分支,jj 中的“书签”可指向特定提交。
- 缺失:缺少 VSCode 支持,与 VSCode 在处理冲突时不完全合作。
- 未来:作者在 Google 工作,可能用于内部版本控制系统,已存在多年,若出错可退回到 Git 仓库。
重要细节: - 终端中 change ids 颜色显示在命令中唯一引用所需的前缀。
- “squash 工作流”中
jj squash
将新更改并入前一个提交。 - jj 中冲突提交记录为冲突并在历史中标记,编辑后可解决冲突,相关提交会重新变基。
- 从 Git 转到 Jj 时需适应没有命名分支的情况。
- VSCode 与 Jj 在处理冲突时因技术原因不完全合作。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。