git-auto-push 绕过 hooks 提交

2026-07-13 02:000

定位

绕过所有 git hooks(husky / pre-commit / commit-msg / pre-push)完成一次 add → commit → push 流程。仅在你明确要求时使用——常规提交一律走标准流程,本 skill 不会主动建议用。

对话里说「绕过 hooks 提交」「跳过钩子提交」「--no-verify 推送」「不跑 lint 直接推」「hooks 卡住先推上去」等才会触发。

适用场景

  • husky / lint-staged / commitlint 卡住,先推上去;
  • 大批量重构、WIP 备份到远端;
  • hooks 本身坏了,先推再修。

核心规则:调用即授权

你调用本 skill = 已经明确授权全自动执行。它不会再问「是否提交 / 是否包含未跟踪文件 / 当前是 master 是否继续」,一路跑到底,最后一次性汇报。

唯一会停下来的两种红线情形:

  1. 需要用 --force / --force-with-lease(必须你在当前对话明确要求才可加);
  2. 检测到工作区里明显的敏感文件未在 .gitignore 里(.env* 含真实 secret、*.pemid_rsa*.keycredentials.json 等)——停下提示,让你判断是否真要推。

执行流程(全自动,不打断)

  1. 预检:并行跑 git status --short / git diff --stat / git log -3 / 查当前分支 / 查 remote。结果只用于自检和拟 commit message,不用于询问。
  2. HTTPS remote 自动转 SSH(macOS 必做):macOS 上 HTTPS remote push 会触发 git-credential-osxkeychain 钥匙串弹框并把 Bash 卡死(exit 137)。预检发现 originhttps://github.com/... → 直接 set-url 改成 SSH。只对 github.com 做;Gitee 本机没配 SSH key,保持 HTTPS 让你手动点「始终允许」。
  3. 拟 commit message:中文、≤50 字、快(只看 status + diff --stat,不读 diff 内容)、不加 Co-Authored-By 尾巴。改动集中在一个目录用 <type>(<目录>): <动作>,拟不出来就默认 chore: 更新代码
  4. 暂存:默认 git add -A(含未跟踪文件),除非你说「只推 xxx」。
  5. commitgit commit --no-verify -m "<message>"
  6. pushgit push --no-verify;新分支自动 -u origin <branch>
  7. 验证 & 汇报git log -1 --stat + git status,一次性汇报 commit hash、推到哪个分支、是否还有未提交改动。

嵌套子仓库(gitlink)处理

git statusmodified: packages/web (modified content)(new commits),说明子目录是独立 git 仓库(gitlink),父仓库只追踪它的 commit SHA。默认全部纳入:

  1. (modified content) 的子仓库:cd 进去跑完整的 commit + push 流程;
  2. (new commits) 的子仓库:已 commit 过,只确保已 push;
  3. 回父仓库 git add <子仓库路径> 更新 gitlink SHA,再走父仓库自己的 commit + push。

禁止父仓库 push 完就走、留着子仓库的 (modified content) 让你自己再来一遍。

安全红线

  • 绝不自动使用 --force / --force-with-lease
  • 绝不master / main / release/* 上 force push;
  • 检测到敏感文件停下提示;
  • git config 任何配置、不 amend 历史 commit。

相关

💬留言板0

还没有留言,来发表第一条吧~