chore(git): main分支保护(pre-commit hook禁止直接提交main) + go.md补分支策略

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Qiufeng
2026-06-15 20:30:28 +08:00
co-authored by Claude Opus 4.8
parent 0dd513db6e
commit 65e64cc717
2 changed files with 24 additions and 0 deletions
+12
View File
@@ -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
+12
View File
@@ -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 个从代码精确抽取的细节参考: