docs: 添加 UE5.7 项目 Git 配置与开发规范
- 优化 .gitignore 为 UE5.7 专用版本(新增 Rider/VSCode/日志/崩溃/系统文件等) - 添加 .gitattributes 配置二进制资产处理与 Git LFS 追踪 - 添加 docs/GIT-GUIDE.md 分支策略与提交规范文档 - 添加 .claude/settings.json 项目级权限配置 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,233 @@
|
||||
# ChildHood - Git 规范
|
||||
|
||||
> 本文档规定 ChildHood 项目的 Git 分支策略和提交规范。
|
||||
> 适用场景:单人独立开发 + UE5.7.4
|
||||
|
||||
---
|
||||
|
||||
## 一、分支策略
|
||||
|
||||
采用**轻量级 Feature Branch 模型**,避免企业级复杂流程,保持 `main` 分支随时可玩。
|
||||
|
||||
### 1.1 分支总览
|
||||
|
||||
```
|
||||
main ──────────────────────────────────────── 稳定主线
|
||||
│
|
||||
├── feature/player-movement ───→ 合并后删除
|
||||
├── feature/inventory-system ──→ 合并后删除
|
||||
├── fix/camera-clipping ───────→ 合并后删除
|
||||
├── prototype/procedural-gen ──→ 实验完即删
|
||||
└── release/v0.1 ──────────────→ 永久保留
|
||||
```
|
||||
|
||||
### 1.2 分支类型
|
||||
|
||||
| 分支 | 前缀 | 用途 | 合并目标 | 生命周期 |
|
||||
|---|---|---|---|---|
|
||||
| 主线 | `main` | 稳定可玩版本,每次提交都能编译运行 | — | 永久 |
|
||||
| 功能 | `feature/` | 新系统、新功能开发 | `main` | 完成后删除 |
|
||||
| 修复 | `fix/` | Bug 修复 | `main` | 完成后删除 |
|
||||
| 原型 | `prototype/` | 技术验证、玩法实验 | 合并或丢弃 | 实验完即删 |
|
||||
| 发布 | `release/` | 版本发布标记,只从 `main` 切出 | — | 永久保留 |
|
||||
|
||||
### 1.3 命名规范
|
||||
|
||||
格式:`<类型>/<简短描述>`,全小写,用连字符分隔单词。
|
||||
|
||||
```
|
||||
# ✅ 好的命名
|
||||
feature/player-movement
|
||||
feature/inventory-system
|
||||
feature/dialogue-tree
|
||||
fix/camera-clipping-through-walls
|
||||
fix/enemy-ai-stuck-on-navmesh
|
||||
prototype/procedural-dungeon
|
||||
release/v0.1
|
||||
|
||||
# ❌ 不好的命名
|
||||
my-new-feature
|
||||
fix-bug
|
||||
test
|
||||
feature/AddPlayerMovement
|
||||
```
|
||||
|
||||
### 1.4 工作流程
|
||||
|
||||
```
|
||||
1. 开始新功能
|
||||
git checkout main
|
||||
git pull
|
||||
git checkout -b feature/xxx
|
||||
|
||||
2. 开发过程中(随时提交)
|
||||
git add .
|
||||
git commit -m "wip(xxx): 进度描述"
|
||||
|
||||
3. 功能完成,测试通过
|
||||
git checkout main
|
||||
git merge feature/xxx
|
||||
git branch -d feature/xxx # 删除已合并分支
|
||||
|
||||
4. 到达里程碑
|
||||
git checkout main
|
||||
git tag -a v0.1.0 -m "第一个可玩原型"
|
||||
git checkout -b release/v0.1
|
||||
git push origin release/v0.1
|
||||
```
|
||||
|
||||
### 1.5 核心原则
|
||||
|
||||
- **`main` 永远可玩**:坏了就留在 feature 分支继续改,不要合并进 main
|
||||
- **功能分支粒度**:一个分支做一件事,不要在一个分支里同时做多个系统
|
||||
- **原型不怕乱**:`prototype/` 分支随便写,验证完再决定合并还是丢弃
|
||||
- **定期清理**:已合并的 feature/fix 分支及时删除,避免分支堆积
|
||||
|
||||
---
|
||||
|
||||
## 二、提交规范
|
||||
|
||||
### 2.1 提交消息格式
|
||||
|
||||
```
|
||||
<type>(<scope>): <subject>
|
||||
|
||||
<body>(可选,多行说明)
|
||||
```
|
||||
|
||||
- **subject**:不超过 50 个字符,简明扼要
|
||||
- **body**:每行不超过 72 个字符,解释"做了什么"和"为什么"
|
||||
- 使用中文描述,技术术语保留英文
|
||||
|
||||
### 2.2 Type 类型标签
|
||||
|
||||
| Type | 含义 | 使用场景 |
|
||||
|---|---|---|
|
||||
| `feat` | 新功能 | 新增系统、机制、玩法 |
|
||||
| `fix` | Bug 修复 | 修复已知问题 |
|
||||
| `art` | 美术资源 | 模型、贴图、材质、动画导入 |
|
||||
| `level` | 关卡/场景 | 关卡搭建、场景编辑 |
|
||||
| `audio` | 音效/音乐 | BGM、SFX、语音导入 |
|
||||
| `bp` | 蓝图逻辑 | 蓝图节点修改、逻辑调整 |
|
||||
| `refactor` | 重构 | 不改变功能的结构优化 |
|
||||
| `config` | 项目配置 | 引擎设置、插件配置、项目参数 |
|
||||
| `docs` | 文档 | README、设计文档、注释 |
|
||||
| `wip` | 进行中 | 未完成的工作进度保存 |
|
||||
|
||||
### 2.3 Scope 范围标签(可选)
|
||||
|
||||
按游戏系统或模块划分:
|
||||
|
||||
```
|
||||
player 玩家角色
|
||||
enemy 敌人/AI
|
||||
combat 战斗系统
|
||||
ui UI 界面
|
||||
camera 摄像机
|
||||
inventory 背包/物品
|
||||
dialogue 对话系统
|
||||
quest 任务系统
|
||||
save 存档系统
|
||||
audio 音频系统
|
||||
animation 动画系统
|
||||
ai AI 行为树/状态机
|
||||
level 关卡
|
||||
vfx 视觉特效
|
||||
```
|
||||
|
||||
### 2.4 提交示例
|
||||
|
||||
```bash
|
||||
# 新功能
|
||||
git commit -m "feat(player): 实现角色跳跃和二段跳"
|
||||
|
||||
# 带 body 的详细提交
|
||||
git commit -m "feat(combat): 实现基础连击系统
|
||||
|
||||
- 添加三段连击动画蒙太奇
|
||||
- 实现动画通知触发伤害判定
|
||||
- 连击窗口时间可配置"
|
||||
|
||||
# Bug 修复
|
||||
git commit -m "fix(camera): 修复穿墙时摄像机卡顿问题"
|
||||
|
||||
# 美术资源
|
||||
git commit -m "art(environment): 添加草地和树木模型"
|
||||
|
||||
# 蓝图修改
|
||||
git commit -m "bp(enemy): 实现巡逻-追击-攻击状态机"
|
||||
|
||||
# 关卡搭建
|
||||
git commit -m "level(chapter1): 第一章关卡白盒搭建完成"
|
||||
|
||||
# 进行中
|
||||
git commit -m "wip(crafting): 合成系统UI初步框架"
|
||||
|
||||
# 项目配置
|
||||
git commit -m "config: 启用Nanite和Lumen,设置画质预设"
|
||||
|
||||
# 重构
|
||||
git commit -m "refactor(inventory): 拆分背包数据层与UI层"
|
||||
```
|
||||
|
||||
### 2.5 提交粒度建议
|
||||
|
||||
| 操作 | 粒度 |
|
||||
|---|---|
|
||||
| 蓝图逻辑 | 按功能点提交,不要一次提交多个系统 |
|
||||
| 关卡编辑 | 按区域/房间提交 |
|
||||
| 美术资源导入 | 按类型/角色分批提交 |
|
||||
| C++ 代码 | 按逻辑单元提交 |
|
||||
| 材质/贴图 | 按材质组提交 |
|
||||
|
||||
### 2.6 UE5 特别注意
|
||||
|
||||
- **蓝图与 C++ 分开提交**:避免同一提交中混合两者,方便出问题时 revert
|
||||
- **二进制文件提交**:`.uasset`、`.umap` 无法 diff,commit message 要写清楚改了什么
|
||||
- **不要提交以下目录**(已被 .gitignore 排除):
|
||||
- `Binaries/`、`Intermediate/`、`Saved/`、`DerivedDataCache/`
|
||||
- `.vs/`、`*.sln`(由引擎自动生成)
|
||||
|
||||
---
|
||||
|
||||
## 三、版本号规范
|
||||
|
||||
采用简化语义化版本:
|
||||
|
||||
```
|
||||
v主版本.次版本.修订号
|
||||
|
||||
v0.1.0 ← 第一个可玩原型
|
||||
v0.2.0 ← 核心玩法成型
|
||||
v0.3.0 ← 内容填充阶段
|
||||
...
|
||||
v1.0.0 ← 正式发布
|
||||
```
|
||||
|
||||
- **主版本**:重大里程碑(原型、Alpha、正式版)
|
||||
- **次版本**:新系统/大功能完成
|
||||
- **修订号**:Bug 修复、小调整
|
||||
|
||||
---
|
||||
|
||||
## 四、常用命令速查
|
||||
|
||||
```bash
|
||||
# 查看当前状态
|
||||
git status
|
||||
git log --oneline --graph --all
|
||||
|
||||
# 开始新功能
|
||||
git checkout -b feature/xxx
|
||||
|
||||
# 暂存当前工作(需要临时切分支时)
|
||||
git stash
|
||||
git stash pop
|
||||
|
||||
# 撤销上次提交(保留修改)
|
||||
git reset --soft HEAD~1
|
||||
|
||||
# 强制同步远程(仅限个人项目)
|
||||
git fetch origin
|
||||
git reset --hard origin/main
|
||||
```
|
||||
Reference in New Issue
Block a user