Files
team/memory/vcs-preference-jj.md
T
2026-04-19 21:47:08 +08:00

2.4 KiB
Raw Blame History

name, description, type, originSessionId
name description type originSessionId
VCS 偏好 jj 默认使用 jj 替代 git 进行版本控制操作,含 fetch/同步/divergent 处理经验 feedback 9d12ba86-e9e5-44bf-8d5b-7df3b86f5224

默认使用 Jujutsu (jj) 替代 git 进行版本控制操作。所有 bash 脚本、Python 代码、skills、commands 和文档中的 git 命令应优先使用 jj 等价命令。

Why: 用户决定将版本控制工具从 git 迁移到 jj。

How to apply:

  • 新脚本/代码使用 jj 命令
  • 修改现有文件时将 git 命令替换为 jj 等价命令
  • 提交规范保持中文类型不变(team/git.md 中的规范仍适用)
  • 参考命令对照表: team/jj.md
  • jj 相关术语在文档中统一使用中文(书签、变基、摘选、变更标识、提交标识、版本集查询、并存模式等),仅命令行代码中保留英文原文

Agent 并行开发

  • jj 原生支持多工作副本(jj workspace add),详见 team/jj.md
  • Claude Code Agent 并行开发推荐使用内置 EnterWorktree(走 git worktree),无需手动创建 jj workspace
  • Agent 完成后主目录通过 jj git fetch && jj git import 同步
  • 禁止多个 Agent 在同一目录编辑,必须各自在独立 worktree 中工作

远程同步与 Divergent 处理

Why: 2026-04-14 遇到 jj git fetch 返回 "Nothing changed" 但远程 trunk 实际有新提交的情况,根因是 divergent change ID 导致视觉混乱 + auto-track-bookmarks 默认关闭。

How to apply:

  1. fetch 后工作区不跟随远程书签时jj rebase -r @ -d trunk
  2. 出现 divergent change ID 时:用 jj op log 查明原因,必要时 jj op restore <id> 回退
  3. 不要轻易 jj abandon divergent 版本:如果它是另一个版本的祖先,会产生冲突;应优先用 jj op restore
  4. 已配置 remotes.origin.auto-track-bookmarks = '*':fetch 后本地书签自动跟随远程,容器重建也不会丢失(post-create.sh + 卷挂载双重保障)
  5. 排查 fetch 问题时:用 jj bookmark list --all 对比 @origin 和本地书签指向,用 git log HEAD..origin/trunk 交叉验证

jj 配置持久化

  • 用户级配置路径:~/.config/jj/config.toml
  • DevContainer 中通过 post-create.sh 自动设置 + .volumes/jj 卷挂载持久化
  • 关键配置:user.nameuser.emailremotes.origin.auto-track-bookmarks