--- name: VCS 偏好 jj description: 默认使用 jj 替代 git 进行版本控制操作,含 fetch/同步/divergent 处理经验 type: feedback originSessionId: 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 ` 回退 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.name`、`user.email`、`remotes.origin.auto-track-bookmarks`