From 65e64cc7170ddc2462558b55766f537cc36e5067 Mon Sep 17 00:00:00 2001 From: Qiufeng Date: Mon, 15 Jun 2026 20:30:28 +0800 Subject: [PATCH] =?UTF-8?q?chore(git):=20main=E5=88=86=E6=94=AF=E4=BF=9D?= =?UTF-8?q?=E6=8A=A4(pre-commit=20hook=E7=A6=81=E6=AD=A2=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E6=8F=90=E4=BA=A4main)=20+=20go.md=E8=A1=A5=E5=88=86=E6=94=AF?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .githooks/pre-commit | 12 ++++++++++++ go.md | 12 ++++++++++++ 2 files changed, 24 insertions(+) create mode 100755 .githooks/pre-commit diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..c251313 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,12 @@ +#!/bin/sh +# main 分支保护:禁止直接在 main 上提交(main 是受保护的稳定线)。 +branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) +if [ "$branch" = "main" ]; then + echo "==================================================================" + echo " 拒绝提交:main 是受保护的稳定线,不允许直接在上面改/提交。" + echo " 请切到开发分支再提交: git checkout dev" + echo " 确需向 main 落稳定快照: git commit --no-verify (并随后打 tag)" + echo "==================================================================" + exit 1 +fi +exit 0 diff --git a/go.md b/go.md index c2c1455..6aef2ff 100644 --- a/go.md +++ b/go.md @@ -25,6 +25,18 @@ > - 注意:建 Git 点时移除了 `ofbiz-framework` 内弃用 OFBiz 上游的两个嵌套 `.git`(它是死代码、且文件夹备份保留了文件),以便外层 git 能纳入 modern-ui 前端源码。 > > **以后每次改完一批、确认能跑,就再建一个 Git 点**:`git add -A && git add -f oa-backend/data/oa.db && git commit -m "SNAPSHOT <说明>"`,并打 tag `git tag snapshot-<日期>`。 +> +> ### 🌿 分支策略(main 受保护,dev 干活) +> - **`main`** = 受保护的**稳定线**:只存验证过能跑的快照,**禁止直接在上面改/提交**(有 git hook 拦截)。每个稳定里程碑打 tag。 +> - **`dev`** = 开发线:接手的人/AI 所有改动都在这里做。改崩了只崩 dev,main 毫发无损。 +> - **合并门槛**:dev 必须「`./gradlew compileJava` + `npm run build` + 起服务 + 冒烟登录」全过,才合并回 main: +> ```bash +> git checkout main && git merge dev && git tag snapshot-<日期> && git checkout dev +> ``` +> - **保护机制**:`.githooks/pre-commit`(已 `git config core.hooksPath .githooks` 激活)会**拒绝在 main 上提交**,提示切 dev。确需向 main 落稳定快照用 `git commit --no-verify`。 +> > 新环境克隆/拷贝后需重新激活一次:`git config core.hooksPath .githooks`。 +> - **崩了恢复**:`git checkout main`(main 永远是上一个稳定态)或 `git reset --hard snapshot-W7-20260615-191517` 或拷回备份夹。 +> - **当前所在分支**:接手时应在 **`dev`** 上工作(`git checkout dev`)。 > ## 📚 配套参考文件(和本文件同目录,务必一起读) > 本 `go.md` 是主文档(架构+约定+方法论+坑)。还有 4 个从代码精确抽取的细节参考: