Codex 多仓库提交 Skill 搭建
这个 skill 解决的问题是:多个 Git 仓库每天都要拉代码、分析改动、提交、推送,如果每次都靠手动输入命令或临时告诉 Codex 规则,容易漏步骤、提交错文件、忘记 push、误提交测试文件或 .env 文件。把规则写成 skill 后,Codex 每次都会按同一套流程处理。
一、最终效果
创建完成后,你可以在 Codex 里这样使用:
text
使用 $multi-repo-submit,拉取当前仓库最新代码
text
使用 $multi-repo-submit,提交当前仓库代码
text
使用 $multi-repo-submit,拉取所有工作区最新代码
text
使用 $multi-repo-submit,提交所有工作区代码
在这个 skill 里,语义固定为:
text
拉取代码 = 只拉取,不提交,不推送
提交代码 = 拉取最新代码 + 分析变更 + 排除测试/忽略文件 + 中文 commit + push
提交并推送 = 和提交代码一致
只提交不推送 = commit 后不 push
只分析 = 不暂存、不提交、不推送
所以如果你说:
text
使用 $multi-repo-submit,提交当前仓库代码
它默认包含 git push。
二、为什么这么做
多个工作区分别对应多个仓库时,最容易出错的是这些地方:
- 忘记先拉取远端最新代码。
- 在错误仓库里提交。
- 提交了测试文件。
- 提交了
.env、日志、缓存、构建产物。 - 使用
git add .把无关文件一起提交。 - 提交说明太笼统,例如"修改代码"。
- commit 了但忘记 push。
- 自动拉取时遇到冲突,误操作导致本地改动丢失。
这个 skill 的核心设计是:
SKILL.md负责写固定流程。repositories.yaml负责写仓库清单。git_preflight.sh负责只读预检仓库状态。openai.yaml负责 Codex UI 显示信息。- 每天 8:30 自动拉取用 Codex Automation 实现,不放在 skill 自己里面。
这样做的好处是:流程和仓库清单分开。以后新增仓库,只改 repositories.yaml,不用改主规则。
三、最终目录结构
创建完成后目录如下:
text
<CODEX_HOME>/skills/multi-repo-submit
├── SKILL.md
├── agents
│ └── openai.yaml
├── references
│ └── repositories.yaml
└── scripts
└── git_preflight.sh
各文件作用:
text
SKILL.md
主规则文件。定义拉取、提交、推送、排除文件、冲突处理等规则。
references/repositories.yaml
仓库清单。以后新增仓库、禁用仓库、修改仓库路径、修改远端地址,都改这里。
scripts/git_preflight.sh
只读预检脚本。用于查看仓库状态、分支、远端、upstream 和变更统计。
agents/openai.yaml
Codex UI 元信息。比如显示名称、简介、默认提示词。
四、不同系统上的 Skill 目录在哪里
先记住一个原则:skill 不是放在"代码仓库目录"里,也不一定放在"Codex 程序安装目录"里,而是放在 Codex Home 目录里。
本文用 <CODEX_HOME> 表示 Codex Home。
默认情况下:
text
macOS 默认 CODEX_HOME = ~/.codex
Windows 默认 CODEX_HOME = %USERPROFILE%\.codex
如果安装或配置 Codex 时指定了自定义位置,例如 Windows 上指定到:
text
D:\codex
并且这个目录就是 Codex 的配置/数据目录,那么:
text
CODEX_HOME = D:\codex
skill 目录 = D:\codex\skills\multi-repo-submit
如果只是把 Codex 程序安装在 D 盘,但配置目录仍然在用户目录下,那 skill 仍然应该放在默认的:
text
%USERPROFILE%\.codex\skills\multi-repo-submit
所以在操作前,先确认 Codex Home。后面所有路径都按这个规则推导:
text
skill 目录 = <CODEX_HOME>/skills/multi-repo-submit
如果不确定 Codex Home 在哪里,可以在 Codex 里直接问:
text
请帮我确认当前电脑的 CODEX_HOME 是哪里,以及 multi-repo-submit 应该安装到哪个目录。
也可以自己在终端里看。
macOS:
bash
echo "${CODEX_HOME:-$HOME/.codex}"
Windows:
powershell
if ($env:CODEX_HOME) {
$env:CODEX_HOME
} else {
"$env:USERPROFILE\.codex"
}
macOS
默认 skill 目录是:
text
~/.codex/skills/multi-repo-submit
完整路径类似:
text
/Users/你的用户名/.codex/skills/multi-repo-submit
如果 macOS 上使用了自定义 Codex Home,例如:
text
/Users/你的用户名/dev/codex
那么 skill 目录就是:
text
/Users/你的用户名/dev/codex/skills/multi-repo-submit
macOS 推荐先设置变量,再创建目录。默认路径写法:
bash
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
export SKILL_DIR="$CODEX_HOME/skills/multi-repo-submit"
mkdir -p "$SKILL_DIR/agents"
mkdir -p "$SKILL_DIR/references"
mkdir -p "$SKILL_DIR/scripts"
如果是自定义路径,先把 CODEX_HOME 改成真实目录:
bash
export CODEX_HOME="/Users/你的用户名/dev/codex"
export SKILL_DIR="$CODEX_HOME/skills/multi-repo-submit"
mkdir -p "$SKILL_DIR/agents"
mkdir -p "$SKILL_DIR/references"
mkdir -p "$SKILL_DIR/scripts"
Windows
默认 skill 目录是:
text
%USERPROFILE%\.codex\skills\multi-repo-submit
完整路径类似:
text
C:\Users\你的用户名\.codex\skills\multi-repo-submit
如果 Windows 上使用了自定义 Codex Home,例如:
text
D:\codex
那么 skill 目录就是:
text
D:\codex\skills\multi-repo-submit
PowerShell 默认路径写法:
powershell
if (-not $env:CODEX_HOME) {
$env:CODEX_HOME = "$env:USERPROFILE\.codex"
}
$SkillDir = Join-Path $env:CODEX_HOME "skills\multi-repo-submit"
New-Item -ItemType Directory -Force (Join-Path $SkillDir "agents")
New-Item -ItemType Directory -Force (Join-Path $SkillDir "references")
New-Item -ItemType Directory -Force (Join-Path $SkillDir "scripts")
PowerShell 自定义路径写法,例如放在 D:\codex:
powershell
$env:CODEX_HOME = "D:\codex"
$SkillDir = Join-Path $env:CODEX_HOME "skills\multi-repo-submit"
New-Item -ItemType Directory -Force (Join-Path $SkillDir "agents")
New-Item -ItemType Directory -Force (Join-Path $SkillDir "references")
New-Item -ItemType Directory -Force (Join-Path $SkillDir "scripts")
Windows 上建议安装 Git for Windows。这样既有 git 命令,也有 Git Bash,可以运行本文里的 git_preflight.sh。如果没有 Git Bash,skill 仍然可以使用,因为 Codex 可以直接执行 Git 命令;只是这个 Bash 预检脚本不一定能直接运行。
后面创建四个文件时,不要再死记默认路径。只要记住:
text
SKILL.md 放在 <CODEX_HOME>/skills/multi-repo-submit/SKILL.md
repositories.yaml 放在 <CODEX_HOME>/skills/multi-repo-submit/references/repositories.yaml
git_preflight.sh 放在 <CODEX_HOME>/skills/multi-repo-submit/scripts/git_preflight.sh
openai.yaml 放在 <CODEX_HOME>/skills/multi-repo-submit/agents/openai.yaml
如果 <CODEX_HOME> 是 D:\codex,那就全部放到 D:\codex\skills\multi-repo-submit 下面。
五、创建第一个文件:SKILL.md
这个文件是最重要的规则文件。
文件路径:
macOS:
text
<CODEX_HOME>/skills/multi-repo-submit/SKILL.md
Windows:
text
<CODEX_HOME>\skills\multi-repo-submit\SKILL.md
你可以用任意文本编辑器创建这个文件。下面是当前实际使用的内容,可以直接复制。
markdown
---
name: multi-repo-submit
description: 多仓库 Git 拉取、提交和推送流程。用于用户要求 Codex 处理一个或多个独立工作区仓库,例如拉取代码、更新代码、分析改动、提交代码、提交并推送、只提交不推送、只分析改动,或处理 asso、daizhang、aicloud、ronda 以及 repositories.yaml 中登记的其他仓库。
---
# 多仓库提交
本 skill 规范多个独立 Git 仓库的日常拉取、分析、提交和推送流程。默认仓库清单在 `references/repositories.yaml` 中维护;流程规则在本文件中维护。
## 用户指令语义
按以下规则解释用户说法:
- "拉取代码"、"更新代码"、"同步代码":只拉取最新代码,不暂存、不提交、不推送。
- "提交代码":执行完整流程,包含拉取最新代码、分析变更、排除测试文件和忽略文件、生成中文提交说明、提交并推送。
- "提交并推送":与"提交代码"含义一致。
- "只提交不推送":拉取、分析、暂存并提交,但不执行 `git push`。
- "只分析"、"检查改动"、"看看哪些文件要提交":只分析变更,不执行拉取以外的写操作,不暂存、不提交、不推送;如果用户明确说不要拉取,也不要拉取。
- "推送代码":只推送已有本地提交,不创建新提交;推送前先 fetch 并确认远端状态。
- "四个工作区"、"所有工作区"、"全部仓库"、"每个仓库":读取 `references/repositories.yaml`,只处理 `enabled: true` 的仓库。
- 指定仓库名称时,只处理指定仓库,例如 `asso`、`daizhang`、`aicloud`、`ronda`。
- "当前仓库":只处理当前工作目录所在 Git 仓库;若当前仓库未登记,仍可处理,但最终总结要说明未登记。
## 仓库配置
处理多仓库请求前,读取 `references/repositories.yaml`。
使用规则:
- 按配置文件中的顺序逐个处理仓库。
- 只处理 `enabled: true` 的仓库,除非用户明确指定未启用仓库。
- 不假设仓库之间共享分支、远端、技术栈或提交内容。
- 新增仓库时,只更新 `references/repositories.yaml`,不要改本流程。
- 可以运行 `scripts/git_preflight.sh <仓库路径>` 做只读预检;该脚本只读取状态并执行 `git fetch --prune`,不会提交或推送。
## 禁止事项
- 不使用 `git add .`。
- 不提交测试文件,除非用户明确说允许包含测试文件。
- 不提交忽略文件、临时文件、缓存、构建产物、日志或密钥配置。
- 不执行 `git reset --hard`、`git checkout -- <file>`、`git clean`、丢弃改动或覆盖用户改动,除非用户明确要求。
- 不执行 `git push --force` 或 `git push --force-with-lease`,除非用户明确要求并确认仓库和分支。
- 不自动设置 upstream。缺少 upstream 时,停止当前仓库并报告。
- 不自动解决冲突后继续提交。冲突出现时,先报告冲突文件和当前状态。
- 不把不同仓库的改动合并成一个判断;每个仓库独立分析、独立提交、独立推送。
## 单仓库流程
对每个仓库按以下顺序执行。
### 1. 确认仓库
运行:
```bash
pwd
git rev-parse --show-toplevel
git branch --show-current
git status -sb
git remote -v
```
确认当前目录、仓库根目录、当前分支、远端和变更状态。
### 2. 检查 upstream
运行:
```bash
git rev-parse --abbrev-ref --symbolic-full-name @{u}
```
如果没有 upstream:
- 停止当前仓库。
- 报告仓库名称、路径和当前分支。
- 不猜测 upstream,不自动执行 `git push -u`。
### 3. 获取远端状态
运行:
```bash
git fetch --prune
git status -sb
git log --oneline --decorate --left-right HEAD...@{u}
```
判断本地与远端是否一致、落后、领先或分叉。
### 4. 拉取最新代码
拉取类请求和提交类请求都要先同步最新代码。
如果本地落后远端且本地没有独立提交,使用:
```bash
git pull --ff-only
```
如果本地有提交且远端也有新提交,使用:
```bash
git pull --rebase --autostash
```
如果出现冲突:
```bash
git status --short
```
然后停止当前仓库,报告冲突文件,不继续暂存、提交或推送。
如果用户只是"拉取代码",到这里结束当前仓库并汇总结果。
### 5. 分析变更文件
提交类请求必须分析所有变更文件:
```bash
git status --short
git diff --stat
git diff
```
将文件分类为:
```text
应提交:本次任务相关源码、配置或文档
排除测试:测试文件,默认不提交
排除忽略:忽略文件、临时文件、缓存文件、构建产物、日志、密钥配置
排除无关:与本次任务无关的用户改动
需要确认:归属不清或风险较高的文件
```
只允许暂存"应提交"文件。若没有应提交文件,不创建提交。
### 6. 排除测试文件
默认不提交以下测试文件:
```text
**/__tests__/**
**/test/**
**/tests/**
**/*.test.*
**/*.spec.*
**/*_test.*
**/*Test.*
```
如果检测到测试文件变更,最终总结中说明已按规则排除。只有用户明确说"允许包含测试文件"或"这次测试文件也提交"时,才可以提交测试文件。
### 7. 排除忽略文件和生成文件
默认不提交:
```text
.DS_Store
*.log
*.tmp
*.bak
*.swp
.env
.env.*
coverage/**
dist/**
build/**
output/**
node_modules/**
.cache/**
.pytest_cache/**
__pycache__/**
.playwright-cli/**
```
必要时用下面命令确认文件是否被忽略:
```bash
git check-ignore -v <path>
```
不要使用 `git add -f` 强制添加忽略文件,除非用户明确要求。
注意:已经被 Git 跟踪的文件即使后来被写入 `.gitignore`,仍然会出现在变更中,需要正常分析,不能只凭 `.gitignore` 判断。
### 8. 暂存文件
只能显式暂存确认要提交的文件:
```bash
git add <file1> <file2>
```
如果一个文件里混有相关和无关改动,使用:
```bash
git add -p <file>
```
### 9. 提交前检查
提交前必须运行:
```bash
git diff --cached --stat
git diff --cached
```
确认暂存区没有测试文件、忽略文件、构建产物、临时文件或无关改动。
如果暂存区为空,不创建提交。
### 10. 校验
优先使用 `references/repositories.yaml` 中对应仓库的 `validate` 配置。
如果 `validate: auto`,根据仓库文件判断可用校验命令,例如:
```text
package.json
pnpm-lock.yaml
yarn.lock
package-lock.json
Makefile
pyproject.toml
go.mod
Cargo.toml
```
不要为了提交默认运行明显长耗时或破坏性的命令。若无法判断合适校验命令,最终总结中说明"未找到明确校验命令"。
测试文件排除规则只影响提交内容,不影响运行测试或校验命令。
### 11. 中文提交说明
提交说明必须使用中文,并准确总结当前仓库本次实际提交内容。
推荐:
```text
修复账单列表筛选异常
优化云服务配置加载流程
调整关联数据提交逻辑
补充工作区状态处理
```
避免:
```text
修改代码
更新文件
提交代码
fix
update
```
如果一个仓库中存在多组明显独立的改动,优先拆成多个提交;如果用户只是要求提交当前仓库改动,可以创建一个聚焦的中文提交。
### 12. 提交
运行:
```bash
git commit -m "<中文提交说明>"
git status -sb
git log --oneline -1
```
记录提交哈希。
如果用户要求"只提交不推送",到这里结束当前仓库并汇总结果。
### 13. 推送
提交类请求默认推送:
```bash
git push
```
如果 push 被拒绝:
- 不强制推送。
- 重新运行 `git fetch --prune`。
- 用 `git status -sb` 和 `git log --oneline --decorate --left-right HEAD...@{u}` 分析原因。
- 需要 rebase 或处理冲突时,先说明状态,再继续。
## 最终总结
每个仓库都要简洁汇总:
- 仓库名称和路径
- 当前分支
- 拉取结果
- 提交的文件
- 排除的测试文件
- 排除的忽略文件、临时文件或构建产物
- 中文提交说明
- 提交哈希
- 推送结果
- 校验命令和结果,或未校验原因
如果某个仓库因冲突、无 upstream、push 被拒绝、无应提交文件或文件归属不清被跳过,要明确说明原因。
六、创建第二个文件:repositories.yaml
这个文件是仓库清单。
文件路径:
macOS:
text
<CODEX_HOME>/skills/multi-repo-submit/references/repositories.yaml
Windows:
text
<CODEX_HOME>\skills\multi-repo-submit\references\repositories.yaml
下面是当前使用的配置结构。示例里 Git 地址写成了"填写真实 Git 地址"。主要替换:
defaults.root- 每个仓库的
path - 每个仓库的
remote - 必要时替换
default_branch - 必要时替换
upstream
注意:remote 位置必须换成真实 Git 地址。
Windows 路径建议在 YAML 里使用正斜杠,例如:
yaml
path: "C:/Users/ronhe/Documents/software/code/asso"
不要写成:
yaml
path: "C:\Users\ronhe\Documents\software\code\asso"
因为反斜杠在 YAML 字符串里容易产生转义问题。
yaml
# 多仓库提交配置
#
# 新增仓库时,在 repositories 下追加一项即可。
# 不要在本文件保存密码、token、私钥或其他敏感凭据。
defaults:
root: "/Users/ronhe/Documents/software/code"
push_after_commit: true
commit_language: "zh-CN"
include_test_files: false
include_ignored_files: false
pull_before_commit: true
pull_strategy: "safe"
validation_mode: "auto"
exclude_patterns:
- "**/__tests__/**"
- "**/test/**"
- "**/tests/**"
- "**/*.test.*"
- "**/*.spec.*"
- "**/*_test.*"
- "**/*Test.*"
- ".DS_Store"
- "*.log"
- "*.tmp"
- "*.bak"
- "*.swp"
- ".env"
- ".env.*"
- "coverage/**"
- "dist/**"
- "build/**"
- "output/**"
- "node_modules/**"
- ".cache/**"
- ".pytest_cache/**"
- "__pycache__/**"
- ".playwright-cli/**"
repositories:
- name: "aisso"
enabled: true
path: "/Users/ronhe/Documents/software/code/asso"
remote: "填写真实 Git 地址,例如 git@example.com:team/aisso.git"
default_branch: "main"
upstream: "origin/main"
validate: "auto"
notes: "前端含 pnpm 项目,后端含 pyproject.toml。"
- name: "daizhang"
enabled: true
path: "/Users/ronhe/Documents/software/code/daizhang/AgentFinancial"
remote: "填写真实 Git 地址,例如 git@example.com:team/AgentFinancial.git"
default_branch: "main"
upstream: "origin/main"
validate: "auto"
notes: "Git 根目录是 daizhang/AgentFinancial;前端含 pnpm lint,后端含 ruff 配置。"
- name: "aicloud"
enabled: true
path: "/Users/ronhe/Documents/software/code/ronhe/aicloud"
remote: "填写真实 Git 地址,例如 git@example.com:team/aicloud.git"
default_branch: "main"
upstream: "origin/main"
validate: "auto"
notes: "前端含 pnpm lint,后端含 ruff 配置。"
- name: "ronda"
enabled: true
path: "/Users/ronhe/Documents/software/code/ronda"
remote: "填写真实 Git 地址,例如 git@example.com:team/aicloud-rongda.git"
default_branch: "main"
upstream: "origin/main"
validate: "auto"
notes: "前端含 pnpm lint,后端含 ruff 配置。"
candidate_scan:
enabled: false
root: "/Users/ronhe/Documents/software/code"
max_depth: 4
rule: "扫描只能发现候选 Git 仓库;未登记仓库不参与全部仓库提交流程,除非用户明确指定。"
如何得到真实值:
bash
git -C /真实/仓库/路径 rev-parse --show-toplevel
git -C /真实/仓库/路径 remote get-url origin
git -C /真实/仓库/路径 branch --show-current
git -C /真实/仓库/路径 rev-parse --abbrev-ref --symbolic-full-name @{u}
Windows PowerShell 也可以运行同样的 Git 命令,只要 Git 已安装:
powershell
git -C "C:/真实/仓库/路径" rev-parse --show-toplevel
git -C "C:/真实/仓库/路径" remote get-url origin
git -C "C:/真实/仓库/路径" branch --show-current
git -C "C:/真实/仓库/路径" rev-parse --abbrev-ref --symbolic-full-name "@{u}"
七、创建第三个文件:git_preflight.sh
这个文件是只读预检脚本。它不是必须的,但建议创建。Codex 可以用它快速了解仓库状态。
文件路径:
macOS:
text
<CODEX_HOME>/skills/multi-repo-submit/scripts/git_preflight.sh
Windows:
text
<CODEX_HOME>\skills\multi-repo-submit\scripts\git_preflight.sh
Windows 上如果要运行这个 .sh 文件,建议用 Git Bash。没有 Git Bash 也不影响 skill 的核心规则,Codex 仍然可以直接执行 Git 命令。
文件内容如下:
bash
#!/usr/bin/env bash
set -euo pipefail
repo="${1:-.}"
cd "$repo"
echo "仓库根目录:"
git rev-parse --show-toplevel
echo
echo "当前分支:"
git branch --show-current
echo
echo "当前状态:"
git status -sb
echo
echo "远端信息:"
git remote -v
echo
echo "上游分支:"
if git rev-parse --abbrev-ref --symbolic-full-name '@{u}' >/dev/null 2>&1; then
git rev-parse --abbrev-ref --symbolic-full-name '@{u}'
else
echo "未设置 upstream"
fi
echo
echo "获取远端最新状态:"
git fetch --prune
echo
echo "fetch 后状态:"
git status -sb
echo
echo "本地与上游差异:"
if git rev-parse --abbrev-ref --symbolic-full-name '@{u}' >/dev/null 2>&1; then
git log --oneline --decorate --left-right HEAD...'@{u}' || true
else
echo "未设置 upstream,无法比较"
fi
echo
echo "变更文件:"
git status --short
echo
echo "变更统计:"
git diff --stat || true
echo
echo "暂存区统计:"
git diff --cached --stat || true
macOS 上给脚本加执行权限:
bash
chmod +x "$SKILL_DIR/scripts/git_preflight.sh"
macOS 测试:
bash
"$SKILL_DIR/scripts/git_preflight.sh" /真实/仓库/路径
Windows Git Bash 测试:
bash
/c/Users/你的用户名/.codex/skills/multi-repo-submit/scripts/git_preflight.sh /c/真实/仓库/路径
如果 Windows 上自定义 Codex Home 是 D:\codex,Git Bash 里对应路径通常写成:
bash
/d/codex/skills/multi-repo-submit/scripts/git_preflight.sh /c/真实/仓库/路径
这个脚本只会执行状态检查和 git fetch --prune,不会 git add、不会 git commit、不会 git push。
八、创建第四个文件:openai.yaml
这个文件是 Codex UI 信息。
文件路径:
macOS:
text
<CODEX_HOME>/skills/multi-repo-submit/agents/openai.yaml
Windows:
text
<CODEX_HOME>\skills\multi-repo-submit\agents\openai.yaml
文件内容如下:
yaml
interface:
display_name: "多仓库提交"
short_description: "按固定规则拉取分析并中文提交推送多个仓库"
default_prompt: "Use $multi-repo-submit 提交并推送所有启用仓库,提交说明使用中文。"
policy:
allow_implicit_invocation: true
九、创建完成后怎么确认可用
重启 Codex app,或者新开一个 Codex 线程。
在输入框中输入:
text
$multi-repo-submit
如果能找到,说明 skill 被识别。
也可以直接说:
text
使用 $multi-repo-submit,分析当前仓库改动,不要提交,不要推送
如果 Codex 能按这个规则分析,说明已经可以使用。
十、每天早上 8:30 自动拉取代码
这个功能不是 SKILL.md 自己完成的,而是用 Codex Automation 定时调用 skill。
推荐只自动拉取,不自动提交。原因是:
text
拉取代码适合自动化
提交代码不适合无人值守自动化
每天自动提交可能误提交文件,或者把不该推送的内容推到远端。
推荐创建的 Automation
在 Codex 里说:
text
创建一个每天北京时间早上 8:30 运行的 Codex Automation,名称叫"每日拉取工作区代码"。运行目录使用我的代码根目录。任务内容是:使用 $multi-repo-submit,拉取所有工作区最新代码。只执行拉取/同步流程,不提交、不推送。读取 <CODEX_HOME>/skills/multi-repo-submit/references/repositories.yaml,只处理 enabled: true 的仓库;如果这台电脑使用自定义 Codex Home,请把 <CODEX_HOME> 换成真实路径。每个仓库先检查状态、upstream 和远端差异,再安全拉取。遇到冲突、本地改动阻塞、无 upstream 或网络失败时,停止当前仓库,不自动解决冲突,不提交,不推送,继续处理其他仓库。最终用中文汇总每个仓库的拉取结果。
如果在 Windows 上,路径要按 Windows 实际情况写,例如:
text
运行目录使用 C:/Users/你的用户名/Documents/software。
如果在 macOS 上,可以写:
text
运行目录使用 /Users/你的用户名/Documents/software。
自动拉取遇到冲突怎么办
不会自动解决冲突。
默认行为是:
text
停止当前仓库
报告冲突文件
不暂存
不提交
不推送
继续处理其他仓库
最终汇总
之后你可以手动让 Codex 处理:
text
使用 $multi-repo-submit,分析 asso 当前冲突,先不要提交
十一、后续新增仓库
只改这个文件:
text
<CODEX_HOME>/skills/multi-repo-submit/references/repositories.yaml
在 repositories: 下追加:
yaml
- name: "新仓库名"
enabled: true
path: "/真实/仓库/路径"
remote: "填写真实 Git 地址"
default_branch: "main"
upstream: "origin/main"
validate: "auto"
notes: "新增仓库。"
Windows 路径建议写成:
yaml
path: "C:/Users/你的用户名/Documents/software/code/新仓库名"
新增后,可以让 Codex 测试:
text
使用 $multi-repo-submit,分析 新仓库名 改动,不要提交,不要推送
十二、最推荐的日常用法
每天自动拉取:
text
每天 8:30 自动拉取所有工作区最新代码,只拉取,不提交,不推送。
平时提交当前仓库:
text
使用 $multi-repo-submit,提交当前仓库代码
平时提交所有仓库:
text
使用 $multi-repo-submit,提交所有工作区代码
只看改动:
text
使用 $multi-repo-submit,分析所有工作区改动,不要提交,不要推送
核心原则:
text
固定流程写进 SKILL.md
仓库清单写进 repositories.yaml
每天自动拉取用 Codex Automation
提交和推送保留人工触发