包含: - GIT_WORKFLOW.md - 详细的 Git 工作流规范 - scripts/git-setup.sh - Git 工作区初始化脚本 - scripts/git-daily.sh - 日常 Git 管理脚本 - scripts/git-novel-workflow.sh - 小说专用 Git 工作流 - 更新 .gitignore 排除子仓库的 .git 目录 - 添加 novel-tracker/ 目录 - 添加 projects/ 目录(排除子仓库 .git) - 添加 tomato-novel/ 目录
3.7 KiB
3.7 KiB
Git 工作流规范 - 番茄小说创作
分支策略
主分支
main/master: 稳定版本,所有发布版本从此分支创建- 保护分支,禁止直接推送,必须通过 Pull Request
开发分支
develop: 主要开发分支,所有新功能合并到此分支feature/*: 功能分支,从develop创建,开发完成后合并回developfix/*: 修复分支,从develop或main创建,修复完成后合并回对应分支hotfix/*: 紧急修复分支,从main创建,修复完成后合并回main和develop
发布分支
release/*: 发布分支,从develop创建,用于发布准备tag/v*.*.*: 版本标签,标记发布版本
提交规范
提交消息格式
<type>(<scope>): <subject>
<body>
<footer>
类型 (type)
feat: 新功能fix: 修复 bugdocs: 文档更新style: 代码格式调整refactor: 代码重构test: 测试相关chore: 构建过程或辅助工具的变动perf: 性能优化ci: CI/CD 配置
示例
feat(novel): 添加第19章草稿
- 新增叶知秋视角的心理描写
- 完善张明远调查线索
- 添加悬疑钩子设置
Closes #123
文件组织
必版本控制的文件
- 小说内容 (
novel/): 所有章节、人物设定、大纲 - 配置文件 (
*.md): 核心配置文件 - 脚本工具 (
*.py,*.sh): 自动化脚本 - 技能库 (
skills/): 已安装的技能 - 记忆文件 (
memory/): 历史记录
忽略的文件
参见 .gitignore 配置
工作流程
日常开发
- 从
develop创建功能分支:git checkout -b feature/new-chapter develop - 开发完成后提交: 遵循提交规范
- 推送到远程:
git push origin feature/new-chapter - 创建 Pull Request 到
develop
版本发布
- 从
develop创建发布分支:git checkout -b release/v1.0.0 develop - 进行最终测试和调整
- 合并到
main:git checkout main && git merge --no-ff release/v1.0.0 - 打标签:
git tag -a v1.0.0 -m "Release v1.0.0" - 合并回
develop:git checkout develop && git merge --no-ff release/v1.0.0 - 删除发布分支:
git branch -d release/v1.0.0
紧急修复
- 从
main创建热修复分支:git checkout -b hotfix/critical-bug main - 修复问题并提交
- 合并到
main:git checkout main && git merge --no-ff hotfix/critical-bug - 打标签:
git tag -a v1.0.1 -m "Hotfix v1.0.1" - 合并回
develop:git checkout develop && git merge --no-ff hotfix/critical-bug - 删除热修复分支:
git branch -d hotfix/critical-bug
备份策略
本地备份
- 每日自动提交到本地仓库
- 重要变更立即提交
远程备份
- 推送到私有 Git 服务器 (Gitea/GitLab)
- 定期推送到多个远程仓库
冲突解决
预防措施
- 频繁从上游分支拉取更新
- 保持分支小而专注
- 及时合并已完成的功能
解决步骤
- 拉取最新代码:
git pull origin develop - 解决冲突: 手动编辑冲突文件
- 标记已解决:
git add <file> - 继续合并:
git commit - 推送更新:
git push origin <branch>
工具辅助
Git 别名
# 添加到 ~/.gitconfig
[alias]
co = checkout
br = branch
ci = commit
st = status
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
提交前检查
# 检查代码格式
black *.py
isort *.py
# 运行测试
pytest tests/
注意事项
- 禁止提交敏感信息 (API Keys, 密码等)
- 保持提交历史的清晰和有意义
- 及时清理无用分支
- 定期备份远程仓库
- 测试后再合并到主分支