# Sub2API 二次开发指南 ## 🔧 Git 工作流程 ### 初始设置 ```bash # 1. 克隆官方仓库 git clone https://github.com/Wei-Shaw/sub2api.git sub2api-dev cd sub2api-dev # 2. 配置远程仓库 git remote rename origin upstream # 官方仓库改名为 upstream git remote add origin https://your-git.com/your-repo.git # 添加你的仓库 # 3. 创建开发分支 git checkout -b dev # 4. 推送到你的仓库 git push -u origin dev ``` ### 远程仓库配置结果 ```bash git remote -v # upstream https://github.com/Wei-Shaw/sub2api.git (fetch) # upstream https://github.com/Wei-Shaw/sub2api.git (push) # origin https://your-git.com/your-repo.git (fetch) # origin https://your-git.com/your-repo.git (push) ``` --- ## 🔄 同步官方更新 ### 方式 1:查看官方更新 ```bash # 拉取官方最新代码 git fetch upstream # 查看官方更新内容 git log HEAD..upstream/main --oneline # 查看详细差异 git diff HEAD..upstream/main # 查看某个文件的差异 git diff HEAD..upstream/main -- backend/internal/service/gateway_service.go ``` ### 方式 2:合并官方更新 ```bash # 确保工作区干净 git status # 提交你的修改 git add . git commit -m "feat: 我的二开功能" # 拉取并合并官方更新 git fetch upstream git merge upstream/main # 如果有冲突,解决后: git add . git commit -m "merge: 合并官方更新" # 推送到你的仓库 git push origin dev ``` ### 方式 3:使用 Rebase(更清晰的历史) ```bash # 拉取官方更新 git fetch upstream # 将你的提交重放到官方最新代码之上 git rebase upstream/main # 如果有冲突,解决后: git add . git rebase --continue # 强制推送到你的仓库(注意:rebase 会改变历史) git push -f origin dev ``` --- ## 📦 部署流程 ### 生产环境部署 ```bash cd /opt/sub2api-dev/deploy # 运行自动部署脚本 chmod +x deploy-dev.sh bash deploy-dev.sh ``` ### 手动部署 ```bash # 1. 进入部署目录 cd /opt/sub2api-dev/deploy # 2. 创建配置(如果没有) cp docker-compose.yml docker-compose.prod.yml cp .env.example .env # 3. 修改配置 nano docker-compose.prod.yml # 改端口为 2080,配置 Redis nano .env # 设置密码等 # 4. 启动服务 docker-compose -f docker-compose.prod.yml pull docker-compose -f docker-compose.prod.yml up -d # 5. 查看日志 docker-compose -f docker-compose.prod.yml logs -f ``` --- ## 🛠️ 开发建议 ### 目录结构 ``` sub2api-dev/ ├── .git/ # Git 仓库 ├── backend/ # 后端代码(Go) │ ├── cmd/server/ # 入口 │ ├── internal/ # 核心逻辑 │ └── ent/ # 数据模型 ├── frontend/ # 前端代码(Vue) │ └── src/ └── deploy/ # 部署配置 ├── docker-compose.prod.yml ├── .env └── deploy-dev.sh ``` ### 常见二开场景 #### 1. 修改后端逻辑 ```bash # 修改代码 vim backend/internal/service/gateway_service.go # 提交 git add backend/ git commit -m "feat: 修改网关逻辑" # 重新构建镜像(如果需要) cd backend docker build -t sub2api:custom . # 修改 docker-compose.prod.yml 使用自定义镜像 # image: sub2api:custom # 重启服务 cd ../deploy docker-compose -f docker-compose.prod.yml up -d ``` #### 2. 修改前端界面 ```bash # 修改代码 vim frontend/src/views/HomeView.vue # 本地测试 cd frontend npm install npm run dev # 构建 npm run build # 提交 git add frontend/ git commit -m "feat: 修改首页界面" # 后端重新构建(前端会被嵌入) cd ../backend go build -tags embed -o sub2api ./cmd/server ``` #### 3. 添加新功能 ```bash # 创建功能分支 git checkout -b feature/new-feature # 开发... # 提交 git add . git commit -m "feat: 添加新功能" # 合并到开发分支 git checkout dev git merge feature/new-feature # 推送 git push origin dev ``` --- ## 🔍 对比工具 ### 使用 VS Code 对比 ```bash # 安装 VS Code Remote SSH 插件 # 然后在 VS Code 中: # 1. 连接到服务器 # 2. 打开 /opt/sub2api-dev # 3. 使用 Git 功能对比差异 ``` ### 命令行对比 ```bash # 对比某个文件 git diff upstream/main -- backend/internal/service/gateway_service.go # 对比某个目录 git diff upstream/main -- backend/internal/service/ # 生成对比报告 git diff upstream/main > changes.patch # 查看修改的文件列表 git diff --name-only upstream/main ``` --- ## ⚠️ 注意事项 1. **定期同步**: 建议每周拉取一次官方更新 2. **冲突处理**: 遇到冲突时,优先保留官方的核心逻辑,调整你的二开代码 3. **分支管理**: 重要功能单独开分支,测试通过后再合并 4. **备份数据**: 更新前备份数据库和配置文件 5. **测试环境**: 建议先在测试环境验证更新,再应用到生产 --- ## 📋 常用命令速查 ```bash # Git 管理 git status # 查看状态 git log --oneline -10 # 查看提交历史 git fetch upstream # 拉取官方更新 git diff upstream/main # 对比差异 git merge upstream/main # 合并更新 # Docker 管理 docker-compose -f docker-compose.prod.yml ps # 查看状态 docker-compose -f docker-compose.prod.yml logs -f # 查看日志 docker-compose -f docker-compose.prod.yml restart # 重启 docker-compose -f docker-compose.prod.yml down # 停止 # 服务管理 docker-compose -f docker-compose.prod.yml pull # 更新镜像 docker-compose -f docker-compose.prod.yml up -d # 启动 ```