AgentSkillsCN

use-jj-not-git

关于如何使用Jujutsu(jj)进行版本控制的指南。当你需要像使用Git一样正确地提交与编辑commit时,或者在需要理解jj命令与概念(如工作副本、变更、冲突、操作日志、书签、修订集)、排查jj问题、配置jj设置、理解jj工作流程、将Git命令翻译为jj命令,或与jj仓库协作时,都可以使用此技能。此外,当用户提及“jujutsu”、版本控制,或commit时,也可触发该技能。

SKILL.md
--- frontmatter
name: use-jj-not-git
description: Guidance for using Jujutsu (jj) for version control. Use this skill when you would use git in order to make and edit commits properly, or for help to understand jj commands or concepts (working copy, changes, conflicts, operation log, bookmarks, revsets), troubleshoot jj issues, configure jj settings, understand jj workflows, translate Git commands to jj, or work with jj repositories. Also trigger when users mention "jujutsu", version control, or commits.

Jujutsu (jj) Commit Guide

Use jj instead of git for all version control operations.

Making Commits

No staging area - Files are automatically tracked. Just edit files and commit.

bash
# Describe current change (like writing a commit message)
jj describe -m "Add feature X"

# Finalize current change and start a new empty one
jj commit -m "Add feature X"

# Start new change on top of current (like git commit without -a)
jj new -m "Next task"

# Start new change on main
jj new main -m "Start feature"

Key Differences from Git

  • @ = working copy (current change)
  • @- = parent of working copy
  • Changes auto-amend - editing files updates the current change
  • Use jj squash to move changes into parent (like git commit --amend)
  • Use jj squash -i for interactive selection

Quick Reference

TaskCommand
Set commit messagejj describe -m "message"
Finalize and continuejj commit -m "message"
Start new changejj new or jj new main
Amend into parentjj squash
View statusjj st
View logjj log
Push to remotejj git push --change @
Undo last operationjj undo

References

For detailed guidance, read references/ files:

  • git-to-jj-commands.md - Comprehensive Git → jj command mapping
  • git-comparison.md - Conceptual differences from Git
  • working-copy.md - How automatic commits work
  • bookmarks.md - Managing bookmarks (branches)
  • github.md - Fork workflows and PRs
  • conflicts.md - Conflict resolution
  • operation-log.md - Undo and operation history
  • revsets.md - Query syntax (@, @-, main..@, etc.)
  • config.md - Configuration options
  • tutorial.md - Step-by-step introduction
  • divergence.md - Handling divergent changes
  • multiple-remotes.md - Multi-remote setups
  • git-compatibility.md - Colocated repos and Git interop