主要观点:Jujutsu(jj)是用 Rust 编写的新版本控制系统,过去一年作者偶尔有所关注,上周决定尝试,发现其设计一致、简单且令人享受。大部分人用其 Git 后端,可与现有 Git 仓库配合使用。
关键信息:
- Undo 操作:可使用
jj undo
撤销操作,用jj operation log
查看操作日志。 - Changes(变更):是核心操作对象,可变且 ID 随机生成不变,可修改,指向 Git 提交(修订),默认在主分支或 Git 标签时变为不可变。
jj log
可查看变更历史和树,变化可标记书签但主要用于推送到远程 Git 服务器。 - Pattern: git stash(模式:git stash):工作副本是 Change,可通过
jj new @-
创建新变更,保留当前工作副本。 - Editing Changes in Weird Places(在奇怪地方编辑变更):可自由编辑可变变更,
jj edit <id>
可检出并编辑,可用-A
和-B
指定新变更的位置,jj rebase
可用于移动变更。 - Bookmarks(书签):替代分支,创建用
jj bookmark create
,更新用jj bookmark set
,跟踪远程书签用jj bookmark track
,添加变更到书签时需手动更新。 - Merges(合并):创建带有多个父级的变更即可。
- Conflicts(冲突):以一流方式处理,变更可处于冲突状态,
jj status
和jj log
会提及,可手动或用工具解决,解决后后代变更不再冲突。 - Revset Expressions(修订集表达式):jj 命令基于修订或修订集操作,有函数和操作符,
jj log
可接受表达式,文档有详细介绍。 - Setting Up jj with an Existing Git Repo(用现有 Git 仓库设置 jj):简单,克隆到新目录,运行
jj git init --colocate
,与 Git 集成良好。 - Should You Switch?(是否应切换?):切换成本低,易于融入现有工作流程,一天内可适应,使用愉快。
重要细节:通过各种命令和操作展示了 jj 的特性,如jj log
的输出格式、不同操作的示例等,还推荐了学习 jj 的相关文章和文档。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。