名称: 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)。 - 对于
status、diff、diff-added和log,总是使用--cli(它们的默认是 TUI)。 - 避免 TUI 入口点(例如
xit config);使用xit config list|add|rm ...代替。 - 只要可用,优先使用
--cli;如果不确定,检查xit <cmd> --help。
预检
- 确认
xit可用:command -v xit。- 如果缺失,请用户安装/提供
xit。 - 如果他们拒绝,不要尝试用
git“伪造”;询问他们希望如何继续。
- 如果缺失,请用户安装/提供
- 确认你处于 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 --clixit diff --clixit diff-added --cli
提交周期
xit status --clixit diff --clixit add <路径...>xit diff-added --clixit commit -m "<消息>"
合并 / cherry-pick(冲突)
- 开始:
xit merge <分支或OID>或xit cherry-pick <OID>。 - 检查:
xit status --cli和xit diff --cli。 - 如果冲突:
- 在工作树中解决冲突。
- 暂存解决方案:
xit add <已解决路径...>然后xit diff-added --cli。 - 继续:
xit merge --continue或xit cherry-pick --continue。
- 放弃操作:
xit merge --abort或xit 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 --help和xit <cmd> --help。 - 如果不可用,解释限制并询问方向。
备注
- 基于补丁的合并控制:
xit patch on|off|all。