需配置QClaw的Git命令调用能力与本地Git环境联动,包括设置Git凭据与SSH密钥、启用QClaw Git模块、通过CLI或Python API触发提交,并处理常见失败错误。
如果您希望使用qclaw工具链实现ai生成代码后自动提交至github仓库,则需配置qclaw的git命令调用能力与本地git环境联动。以下是完成该流程的具体操作步骤:
一、配置本地Git凭据与SSH密钥
QClaw执行git push操作前,必须确保系统级Git已认证远程仓库访问权限,避免因身份未验证导致提交失败。需为当前用户设置全局Git用户名/邮箱,并将SSH密钥绑定至GitHub账户。
1、打开终端,执行命令设置全局用户信息:git config --global user.name "your_github_username"
2、执行命令配置全局邮箱:git config --global user.email "your_registered_email@github.com"
3、生成新的SSH密钥对(如尚未创建):ssh-keygen -t ed25519 -C "your_registered_email@github.com"
4、启动ssh-agent并添加私钥:eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519
5、将公钥内容复制到剪贴板:cat ~/.ssh/id_ed25519.pub | pbcopy(macOS)或使用clip(Windows)或xclip(Linux)替代
6、登录GitHub网站,在Settings → SSH and GPG keys中点击New SSH key,粘贴公钥内容并保存
二、在QClaw中启用Git命令执行模块
QClaw默认不自动启用外部shell命令调用,需手动激活Git集成开关,并指定工作目录与目标远程分支,确保AI生成的代码文件位于可提交路径下。
1、进入QClaw主配置目录,定位config.yaml文件
2、将git_integration:字段值设为true
3、在git_integration区块下添加repo_path:项,填写本地仓库绝对路径:/home/user/myproject
4、添加remote_branch:项,指定推送目标分支:main
5、添加commit_message_template:,支持变量插值:"[AUTO] QClaw commit at {{timestamp}}"
三、通过QClaw CLI触发自动提交流程
QClaw提供专用子命令qclaw git commit-and-push,用于扫描AI输出目录变更、执行add/commit/push三步操作,无需手动调用git命令。
1、确保AI代码已写入QClaw配置中指定的output_dir路径
2、在终端中运行:qclaw git commit-and-push --dry-run=false
3、观察控制台输出,确认出现[INFO] Push successful to origin/main日志行
4、若需跳过测试阶段直接执行,移除--dry-run=false参数即可
四、使用QClaw Python API编程调用Git提交
当集成至AI流水线脚本时,可通过导入QClaw内置Git模块实现细粒度控制,例如仅提交特定扩展名文件或跳过某些路径。
1、在Python脚本中导入模块:from qclaw.git import GitManager
2、初始化管理器实例:gm = GitManager(repo_path="/path/to/repo", branch="main")
3、执行文件追踪:gm.add(pattern="src/**/*.py")
4、生成提交:gm.commit(message="[AI] Updated logic modules")
5、推送至远程:gm.push()
五、修复常见提交失败错误
当QClaw报告git push被拒绝时,通常由远程分支存在新提交、本地未拉取更新或权限不足引起,需按不同原因分别处理。
1、若提示non-fast-forward update rejected,先执行拉取合并:qclaw git pull --rebase
2、若提示Permission denied (publickey),检查SSH代理是否活跃:ssh -T git@github.com,返回Hi username! You've successfully authenticated即正常
3、若提示fatal: not a git repository,确认repo_path指向含.git子目录的有效仓库根路径
4、若CI环境中运行失败,需在runner配置中显式启用git命令并挂载SSH密钥文件










