Xit版本控制技能 xit

这个技能用于在检测到 .xit/ 目录或用户指定时,自动将常见的版本控制操作(如状态查看、差异比较、提交、分支管理等)转换为非交互式的 xit CLI 命令,避免图形界面,并确保正确使用 xit 工具。关键词包括:xit, 版本控制, CLI命令, 非交互式, .xit目录, git替代, 软件开发工具。

DevOps 0 次安装 0 次浏览 更新于 3/8/2026

名称: xit 描述: “当仓库有 .xit/ 目录或用户要求使用 xit 时:将 git 类似的意图转换为非交互式的 xit CLI 命令(status/diff/log --cli,add/commit/branch/merge/cherry-pick),避免 TUI,除非明确请求,否则不使用 git。”

Xit (xit)

规则(触发条件)

当满足以下任一条件时,使用 xit 代替 git

  • 当前仓库(包括父目录)中存在 .xit/ 目录。
  • 用户明确要求使用 xit(例如“使用 xit”、“.xit 仓库”、“xit status”)。

如果仓库不是 xit 仓库且用户未要求 xit,不要强制使用此技能。

非交互式默认设置

  • 永远不要运行裸 xit(它会启动 TUI)。
  • 对于 statusdiffdiff-addedlog,总是使用 --cli(它们的默认是 TUI)。
  • 避免 TUI 入口点(例如 xit config);使用 xit config list|add|rm ... 代替。
  • 只要可用,优先使用 --cli;如果不确定,检查 xit <cmd> --help

预检

  1. 确认 xit 可用:command -v xit
    • 如果缺失,请用户安装/提供 xit
    • 如果他们拒绝,不要尝试用 git“伪造”;询问他们希望如何继续。
  2. 确认你处于 xit 仓库中:
    • 优先:xit status --cli(它应该能从子目录中发现 .xit/)。

顶层映射(git 类似意图 → xit)

意图 xit 备注
status xit status --cli 为代理提供文本输出。
diff(工作树) xit diff --cli 未添加到索引的更改。
diff --cached xit diff-added --cli 索引与上次提交的对比。
add / stage xit add <路径> 暂存文件内容。
unstage xit unadd <路径> 类似于 git reset HEAD <路径>
restore(工作目录) xit restore <路径> 丢弃本地更改。
rm --cached xit untrack <路径> 停止跟踪但保留文件。
rm xit rm <路径> 停止跟踪并删除文件。
commit xit commit -m "消息" 使用引号内的消息。
log xit log --cli 为代理提供文本输出。
branch list / create / delete xit branch list / xit branch add <名称> / xit branch rm <名称>
switch / checkout xit switch <名称或OID> 更新索引和工作目录。
merge xit merge <分支或OID> 默认基于补丁的合并。
cherry-pick xit cherry-pick <OID> 应用现有提交。

有关更完整的映射和工作流,请参见 references/cli.md

常见工作流

检查更改

  • xit status --cli
  • xit diff --cli
  • xit diff-added --cli

提交周期

  • xit status --cli
  • xit diff --cli
  • xit add <路径...>
  • xit diff-added --cli
  • xit commit -m "<消息>"

合并 / cherry-pick(冲突)

  • 开始:xit merge <分支或OID>xit cherry-pick <OID>
  • 检查:xit status --clixit diff --cli
  • 如果冲突:
    • 在工作树中解决冲突。
    • 暂存解决方案:xit add <已解决路径...> 然后 xit diff-added --cli
    • 继续:xit merge --continuexit cherry-pick --continue
  • 放弃操作:xit merge --abortxit cherry-pick --abort

重置语义(git reset 等价)

  • 移动分支指针,仅索引:xit reset <引用或OID>(类似于 git reset --mixed)。
  • 移动分支指针和工作目录:xit reset-dir <引用或OID>(类似于 git reset --hard)。
  • 仅移动分支指针:xit reset-add <引用或OID>(类似于 git reset --soft)。

远程(未实现 pull)

  • 管理远程:xit remote add|rm|list ...
  • 拉取等价:
    • xit fetch <远程>
    • xit merge refs/remotes/<远程>/<分支>(通过检查引用或在获取后使用 xit log --cli 选择 <分支>
  • 推送:
    • xit push <远程> <分支>

护栏

  • 运行前要求明确用户确认xit rm <路径>(删除文件)、xit restore <路径> / xit reset-dir <引用或OID>(丢弃本地更改)或 xit push ... -f / xit push <远程> :<分支>(强制推送 / 删除远程分支)。
  • 当用户想停止跟踪但保留文件时,优先使用 xit untrack <路径>
  • 除非用户明确请求 git,否则不要在 .xit 仓库内运行 git

如果命令似乎缺失

  • 检查 xit --helpxit <cmd> --help
  • 如果不可用,解释限制并询问方向。

备注

  • 基于补丁的合并控制:xit patch on|off|all