ccusage 仓库 Git Push 安全流程分支检查、上游确认与 pre-push 钩子全解析【免费下载链接】ccusagenpx ccusage项目地址: https://gitcode.com/gh_mirrors/cc/ccusage本文以 ccusage 仓库内.agents/skills/commit/references/push.md这一技能参考文档为主体完整梳理提交后推送这一环节的规范操作如何在推送前确认当前分支、如何判断是否存在上游分支、何时需要git push -u并征求用户同意以及推送触发的一组 pre-push 钩子treefmt、gitleaks、oxlint、clippy、Node 测试与 Cargo 测试对变更质量的实际把关。读完本文你将能安全地在 ccusage 这类PR 分支 squash 合并的工作流中完成每次推送并在钩子失败时按规范修复重推。为什么推送之前要先做两道检查ccusage 仓库的提交与推送流程有一套明确约定所有变更最终通过 Pull Request 进入mainPR 分支在合并时采用 squash-merge。这一点在 commit 技能主文档 中写得很清楚Changes reachmainthrough a PR, so commit on a feature branch;references/push.mdhas the branch and upstream checks.也就是说常规开发不在main/master上直接提交并推送而是先切到功能分支。因此在git push之前必须回答两个问题当前在哪个分支如果在main或master上需要先停下把工作移到功能分支再推送。这个分支有没有配置上游upstream有上游直接git push没有上游则不能擅自执行git push -u origin HEAD而必须先询问用户、获得同意后才执行。这两道检查正是 push 参考文档的核心也是本文接下来逐条拆解的对象。第一步用git branch --show-current确认当前分支push 参考文档给出的第一条命令是git branch --show-current这条命令只输出当前所在分支的名字例如feat/codex-report与git branch的列表输出或git rev-parse --abbrev-ref HEAD相比更简洁、更适合在脚本和技能流程中直接取用。执行后存在两种需要处理的情形输出为main或master立即停止推送先把当前工作移到功能分支例如git switch -c feat/your-change后重新组织提交再回到推送流程。输出为功能分支名继续下一步检查。结合 commit 技能主文档 的约定仓库本身也建议用小的后续提交follow-up commits迭代而非反复 amend——因为 PR 分支是 squash 合并最终落入main的提交信息由 PR 标题决定功能分支上的提交粒度服务于可审查性而不是最终历史。因此在main上直接堆积提交并推送既违背仓库约定也会让后续基于 PR 的审查与合并变得混乱。第二步用git rev-parse检查上游分支是否存在确认分支无误后push 参考文档要求检查该分支是否已配置上游git rev-parse --abbrev-ref --symbolic-full-name {u}逐段拆解这条命令的作用{u}是{upstream}的简写指向当前分支配置的上游分支--symbolic-full-name要求输出符号引用名如refs/remotes/origin/feat/x而不是解析后的提交哈希--abbrev-ref把引用名简写为人类可读的形式如origin/feat/x。执行结果对应两种分支走向结果含义后续动作正常输出origin/分支名上游已存在直接执行git push报错fatal: no upstream configured之类无上游询问用户是否执行git push -u origin HEAD用户拒绝则跳过推送值得强调的是询问用户这一步push 参考文档明确要求No upstream: ask the user before runninggit push -u origin HEAD, and skip the push if they decline。git push -u origin HEAD不仅推送当前提交还会把本地分支与origin的对应分支建立跟踪关系这也是后续 PR 的基础属于会改变远程状态的操作因此规范将其设为必须征得同意的步骤而不是 Agent 的自动动作。两种推送路径的执行细节综合 push 参考文档完整的推送决策可以概括为下面的流程git branch --show-current—— 确认不在main/mastergit rev-parse --abbrev-ref --symbolic-full-name {u}—— 确认上游状态上游存在 →git push无上游 → 询问用户同意则git push -u origin HEAD拒绝则跳过。其中第 4 步的询问语义值得注意它意味着在无上游分支的首次推送场景下技能不允许静默推进而是把是否建立远程跟踪分支的选择权交还给用户。这与 create-pr 技能的 open-pr 参考文档 中git push -u origin branch-name的用法前后衔接——推送建立上游后下一步就可以基于该分支创建 PR。推送触发的 pre-push 钩子六道质量闸门推送并不是把提交发出去就结束。ccusage 仓库通过 nix/git-hooks.nix 定义了完整的 pre-push 钩子集git push会按顺序触发它们。commit 技能主文档对此的描述是Push once every commit is in place and let the hooks innix/git-hooks.nixrun — treefmt and gitleaks on commit; treefmt, gitleaks, oxlint,clippy -D warnings, node test, and cargo test on push.也就是说commit 阶段跑 treefmt 与 gitleaks针对暂存内容而push 阶段会跑六项在 nix/git-hooks.nix 中对应以下钩子钩子名称实际命令作用ccusage-treefmt-checktreefmt --fail-on-change全树格式化校验任何未格式化差异都会导致推送失败gitleaks-detectgitleaks detect --config .gitleaks.toml扫描全部文件防止密钥/令牌等敏感信息被推送到远程ccusage-oxlint-checkoxlint .对.ts/.tsx/.js/.jsx/.mjs/.cjs文件做 lintccusage-clippycargo clippy --workspace --all-targets -- -D warningsRust 工作区全目标检查把警告升级为错误node-testnode --test apps/ccusage/src/cli.test.ts nix/tools/models-dev-gen/compact.test.ts运行 Node 内置测试TypeScript 包与工具测试cargo-testcargo test --workspace --all-targets运行整个 Rust 工作区测试其中 cargo 相关钩子只在rust/路径发生变更时触发通过files规则限定oxlint 与 node-test 只在 JS/TS 文件变更时触发而 treefmt-check 与 gitleaks-detect 是全量执行。这些钩子失败是正常的验证过程的一部分push 参考文档与 commit 技能的处理一致不修改已推送的提交而是新建一个小提交修复问题再重新推送。这正是前文提到的PR 分支 squash 合并 小步后续提交工作流的延伸——push 失败修复也遵循同一套小提交哲学。推送前的提交规范scope 校验如何影响 push推送的质量闸门并不只在 pre-push 阶段。ccusage 在commit-msg阶段运行 scripts/validate-commit-scope.nu由 Nushell 脚本校验提交主题subject是否符合 Conventional Commits 且 scope 与暂存文件所属的 agent 一致。这个约束会在你推送之前就拦截掉不合规的提交信息变更落在rust/adapters/agent/下时scope 必须是该 agent 名如fix(kimi)、跨领域 scopedeps、release、pricing、revert或跨多个 agent 时的工作区 scopeadapter、all、rustrust/adapters/common/派生为adapter而非common其他路径不派生 scope提交者的选择不受约束。由于 squash 合并会把 PR 标题写成落入main的提交主题CONTRIBUTING.md 和 open-pr 参考文档 都指出同一套 scope 规则会被 CI 用于校验 PR 标题。因此推送前把提交主题写对等于提前为 PR 标题合规打好了基础。推送失败的常见处理结合 patch 与钩子修复推送被钩子拦下时规范的响应是修复后以新提交重推而不是改写历史。若钩子失败暴露出的是暂存区/补丁层面的问题例如某个 hunk 应用不上commit 技能的 git-apply 参考文档 提供了配套的补丁式暂存手段git apply --check patch_file.patch # 先验证补丁能否干净应用 git apply --cached -v patch_file.patch # 只暂存不进工作树-v 报告被拒绝的 hunk以及不干净应用时的兜底参数--whitespacefix尾随空白、--reject仅冲突 hunk 落盘为.rej、--ignore-whitespace/--ignore-space-change上下文与行尾差异、--reverse撤销已应用的补丁。把两条参考文档连起来看ccusage 的推送流程形成了完整的闭环提交阶段用 patch 精确暂存并让commit-msg钩子校验 scope →推送前确认分支与上游 →推送时由六道 pre-push 钩子做全量验证 →失败时新建小提交修复重推 →成功后基于上游分支创建 PR由 CI 以同一套 scope 规则校验 PR 标题。结语一条可复用的安全推送检查清单把 push 参考文档沉淀为日常可执行的清单每次推送前对照执行即可# 1. 确认不在 main/master 上 git branch --show-current # 2. 确认上游存在 git rev-parse --abbrev-ref --symbolic-full-name {u} # 3a. 有上游直接推送让 pre-push 钩子把关 git push # 3b. 无上游先询问用户同意后才执行 git push -u origin HEAD这套流程的价值在于把推送到远程从一次性的命令执行升级为分支策略确认 上游状态检查 钩子质量验证 失败后小步修复的完整规范既适用于 ccusage 仓库的 Agent 技能调用/commit pushtrue也可以直接迁移到其他采用 PR 分支与 squash 合并工作流的项目。【免费下载链接】ccusagenpx ccusage项目地址: https://gitcode.com/gh_mirrors/cc/ccusage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
信号与系统第六章:时域与频域特性核心解析 简介:《信号与系统课件:第6章 信号与系统的时域和频域特性》是一份面向电子信息类相关专业本科生、考研复习者及自学者制作的PPT教学课件,内容围绕LTI系统在时域与频域中的综合特性展开,适合配合奥本海姆《信号与系统》等教材进行… · 2026/9/21 1:13:33
2026年9月知名GEO机构哪家好榜单TOP5:谁更适合你的企业一文看懂 随着AI搜索时代的全面降临,传统营销的逻辑正在经历一场降维打击式的重构。知名GEO机构哪家好已成为超过68%的国内中大型企业在制定年度数字化预算时的核心关切。在DeepSeek、豆包、文心一言等生成式引擎占据用户流量入口的当下,品牌若无法在AI的“答案区… · 2026/9/21 1:12:33
2026年9月geo优化公司榜单TOP5:头部GEO机构硬核实测横评与企业选型避坑指南 迈富时(Marketingforce,02556.HK)作为AI驱动全球化全栈GEO的领军企业,凭借自研Tforce营销大模型与T-GEO™五层认知架构,在2026年9月geo优化公司综合实力评测中位列榜首,珍岛集团与洞察力科技紧随其后。随着… · 2026/9/21 1:12:33
LibreChat:开源多模型聊天中控台与MCP Agent实战指南 1. LibreChat 是什么?一个真正能落地的开源聊天界面,不是玩具LibreChat 是一个开源、自托管、高度可定制的聊天界面项目,它的核心定位非常清晰:做 OpenAI、Gemini、Claude 等主流大模型 API 的“统一操作台”。它不训练模型&#… · 2026/9/21 1:59:43
nRF52832+RFX2401C实现蓝牙远距离通信的射频链路设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 1:59:43
DDGK 深度散度图核:基于图自编码器的无监督图表示学习与图核实战指南 DDGK 深度散度图核:基于图自编码器的无监督图表示学习与图核实战指南 【免费下载链接】google-research Google Research 项目地址: https://gitcode.com/gh_mirrors/go/google-research
本文以 google-research 仓库中的 graph_embedding/ddgk 实现为主线&a… · 2026/9/21 1:59:43
vue-router 数据获取实战:路由激活时在 Vue 2 中拉取数据的两种模式与源码原理 前端路由 【免费下载链接】vue-router 🚦 The official router for Vue 2 项目地址: https://gitcode.com/gh_mirrors/vu/vue-router 点击查看 免费下载 导读
在 Vue 2 应用中,路由激活时常需要先从服务器拉取数据(例如进入用户… · 2026/9/21 1:58:43
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化 直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39
Word表格编号全攻略:从列表编号到题注交叉引用 写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39
从第一个站到第二个站:独立开发者的静态网站选型与落地实践 1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18