Files
sub2api/GIT_GUIDE.md
huangzhenpc e4db851b31
Some checks failed
CI / test (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
feat: 添加二次开发部署配置和文档
- 添加双 Git remote 配置指南 (GIT_GUIDE.md, GIT_WORKFLOW.md)
- 添加 1Panel 环境部署配置 (docker-compose.1panel.yml, .env.1panel)
- 添加自动化部署脚本 (deploy-complete.sh, deploy-dev.sh, deploy.sh)
- 添加部署说明文档 (README_DEPLOY.md)
- 配置端口 2080 映射
- 支持连接现有 1Panel Redis (1Panel-redis-S1KH)
2026-01-04 10:25:36 +08:00

421 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sub2API 双 Remote Git 配置指南
## 📋 Git 仓库配置
### Remote 配置结构
```
upstream (官方仓库)
└── https://github.com/Wei-Shaw/sub2api.git
用途: 拉取官方更新
origin (你的仓库)
└── https://git.586vip.cn/oadmin/sub2api.git
用途: 保存你的二次开发代码
```
---
## 🚀 快速部署(一键完成)
### 方式 1使用自动化脚本推荐
**在服务器上执行以下命令:**
```bash
# 下载部署脚本
curl -o /tmp/deploy-sub2api.sh https://你的脚本地址/deploy-complete.sh
# 或者直接创建脚本
cat > /tmp/deploy-sub2api.sh << 'SCRIPT_END'
# [这里粘贴 deploy-complete.sh 的全部内容]
SCRIPT_END
# 赋予执行权限
chmod +x /tmp/deploy-sub2api.sh
# 运行脚本
bash /tmp/deploy-sub2api.sh
```
脚本会自动完成:
- ✅ 克隆官方仓库
- ✅ 配置双 remote
- ✅ 推送到你的仓库
- ✅ 创建部署配置
- ✅ 启动 Docker 服务
---
### 方式 2手动分步执行
如果自动脚本有问题,可以手动执行:
```bash
# 1. 克隆官方仓库
cd /opt
git clone https://github.com/Wei-Shaw/sub2api.git sub2api-dev
cd sub2api-dev
# 2. 配置 Git Remote
git remote rename origin upstream
git remote add origin https://git.586vip.cn/oadmin/sub2api.git
# 3. 查看配置
git remote -v
# 应该看到:
# origin https://git.586vip.cn/oadmin/sub2api.git (fetch)
# origin https://git.586vip.cn/oadmin/sub2api.git (push)
# upstream https://github.com/Wei-Shaw/sub2api.git (fetch)
# upstream https://github.com/Wei-Shaw/sub2api.git (push)
# 4. 创建 main 分支
git checkout -b main
# 5. 推送到你的仓库
git push -u origin main
# 6. 配置部署文件
cd deploy
```
创建 `docker-compose.prod.yml`
```bash
cat > docker-compose.prod.yml << 'EOF'
services:
sub2api:
image: weishaw/sub2api:latest
container_name: sub2api
restart: unless-stopped
ports:
- "2080:8080"
volumes:
- ./data:/app/data
environment:
- AUTO_SETUP=true
- SERVER_HOST=0.0.0.0
- SERVER_PORT=8080
- SERVER_MODE=release
- DATABASE_HOST=postgres
- DATABASE_PORT=5432
- DATABASE_USER=sub2api
- DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- DATABASE_DBNAME=sub2api
- DATABASE_SSLMODE=disable
- REDIS_HOST=host.docker.internal
- REDIS_PORT=6379
- REDIS_PASSWORD=redis_bJFKDk
- REDIS_DB=1
- ADMIN_EMAIL=${ADMIN_EMAIL}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
- TZ=Asia/Shanghai
depends_on:
- postgres
extra_hosts:
- "host.docker.internal:host-gateway"
postgres:
image: postgres:18-alpine
container_name: sub2api-postgres
restart: unless-stopped
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=sub2api
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=sub2api
- TZ=Asia/Shanghai
healthcheck:
test: ["CMD-SHELL", "pg_isready -U sub2api"]
interval: 10s
timeout: 5s
retries: 5
volumes:
postgres_data:
EOF
```
创建 `.env` 配置:
```bash
cat > .env << EOF
POSTGRES_USER=sub2api
POSTGRES_PASSWORD=$(openssl rand -base64 24)
POSTGRES_DB=sub2api
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin123
JWT_SECRET=$(openssl rand -hex 32)
JWT_EXPIRE_HOUR=24
TZ=Asia/Shanghai
SERVER_MODE=release
RUN_MODE=standard
EOF
# 显示生成的密码
echo "===== 配置信息 ====="
cat .env
echo "===================="
```
启动服务:
```bash
# 拉取镜像
docker-compose -f docker-compose.prod.yml pull
# 启动服务
docker-compose -f docker-compose.prod.yml up -d
# 查看日志
docker-compose -f docker-compose.prod.yml logs -f
```
---
## 🔄 日常工作流程
### 开发流程
```bash
cd /opt/sub2api-dev
# 1. 创建功能分支
git checkout -b feature/new-feature
# 2. 开发并提交
git add .
git commit -m "feat: 添加新功能"
# 3. 切回主分支
git checkout main
# 4. 合并功能分支
git merge feature/new-feature
# 5. 推送到你的仓库
git push origin main
# 6. 删除功能分支(可选)
git branch -d feature/new-feature
```
### 同步官方更新
```bash
cd /opt/sub2api-dev
# 1. 查看官方更新
git fetch upstream
git log HEAD..upstream/main --oneline
# 2. 查看详细差异
git diff HEAD..upstream/main
# 3. 合并官方更新
git merge upstream/main
# 4. 如果有冲突,解决后提交
git add .
git commit -m "merge: 合并官方更新 v1.x.x"
# 5. 推送到你的仓库
git push origin main
# 6. 重新部署(如果需要)
cd deploy
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
```
### 查看分支和远程信息
```bash
# 查看所有分支
git branch -a
# 查看远程仓库
git remote -v
# 查看当前状态
git status
# 查看提交历史
git log --oneline --graph --all -10
```
---
## 🛠️ 常见操作
### 回滚到某个版本
```bash
# 查看提交历史
git log --oneline
# 回滚到指定提交(软回滚,保留修改)
git reset --soft <commit-hash>
# 回滚到指定提交(硬回滚,丢弃修改)
git reset --hard <commit-hash>
# 推送到远程(需要强制推送)
git push -f origin main
```
### 对比官方版本
```bash
# 对比特定文件
git diff upstream/main -- backend/internal/service/gateway_service.go
# 对比整个目录
git diff upstream/main -- backend/internal/service/
# 生成 patch 文件
git diff upstream/main > my-changes.patch
# 查看改动的文件列表
git diff --name-only upstream/main
```
### 从官方仓库拉取特定分支/标签
```bash
# 拉取官方的所有标签
git fetch upstream --tags
# 查看所有标签
git tag -l
# 基于某个标签创建分支
git checkout -b v1.0.0 tags/v1.0.0
# 切回主分支
git checkout main
```
---
## 📦 Docker 管理
### 服务管理
```bash
cd /opt/sub2api-dev/deploy
# 查看状态
docker-compose -f docker-compose.prod.yml ps
# 查看日志
docker-compose -f docker-compose.prod.yml logs -f
# 只看 sub2api 日志
docker-compose -f docker-compose.prod.yml logs -f sub2api
# 重启服务
docker-compose -f docker-compose.prod.yml restart
# 停止服务
docker-compose -f docker-compose.prod.yml down
# 完全清理(包括数据)
docker-compose -f docker-compose.prod.yml down -v
```
### 更新镜像
```bash
# 拉取最新镜像
docker-compose -f docker-compose.prod.yml pull
# 重新创建容器
docker-compose -f docker-compose.prod.yml up -d
# 查看镜像信息
docker images | grep sub2api
```
---
## ⚠️ 注意事项
1. **定期备份**
- 备份 `.env` 文件
- 导出 PostgreSQL 数据库
- 提交代码到远程仓库
2. **合并冲突处理**
- 遇到冲突时,优先保留官方核心逻辑
- 调整你的二开代码以适配官方更新
3. **测试环境**
- 建议先在测试环境验证更新
- 确认无误后再应用到生产环境
4. **版本管理**
- 重要功能单独开分支
- 使用有意义的提交信息
- 定期推送到远程仓库
---
## 🔍 故障排查
### Git 问题
```bash
# 如果 push 被拒绝
git pull origin main --rebase
git push origin main
# 如果需要强制推送(危险!)
git push -f origin main
# 查看 Git 配置
git config --list
# 重置 remote
git remote remove origin
git remote add origin https://git.586vip.cn/oadmin/sub2api.git
```
### Docker 问题
```bash
# Redis 连接失败
# 修改 docker-compose.prod.yml 中的 REDIS_HOST
# 从 host.docker.internal 改为 172.17.0.1
# 查看容器详细信息
docker inspect sub2api
# 进入容器调试
docker exec -it sub2api sh
# 查看网络
docker network ls
docker network inspect bridge
```
---
## 📞 快速命令速查
```bash
# Git
git status # 状态
git fetch upstream # 拉取官方更新
git merge upstream/main # 合并更新
git push origin 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 # 停止
```