42 lines
2.4 KiB
Markdown
42 lines
2.4 KiB
Markdown
---
|
||
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 <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.name`、`user.email`、`remotes.origin.auto-track-bookmarks`
|