Gogs 服务器: https://git.zhonjin.com:40717
用户: steven_roc
最后更新: 2026-10-08
| 仓库 | 说明 | 大小 | 最近更新 |
|---|---|---|---|
| git_gog_code_sync | Git Gogs 代码自动同步方案 | 28 MB | 2026-10-08 |
| hikvision-isup-client | 海康 ISUP 客户端 C 项目 | 372 MB | 2026-10-08 |
| dts_monitor_android | DTS 光纤温度监控 Android 客户端 | 348 MB | 2026-10-07 |
| mppt_monitor | MPPT 监控 | 34.6 GB | 2026-10-07 |
| mppt_monitor_android | MPPT 监控 Android 客户端 | 248 MB | 2026-10-07 |
| android-client | 宝林电厂环流监控 Android 客户端 | 160 MB | 2026-10-07 |
| md5-keygen | CPU序列号MD5密钥 Web 服务 | 1.08 GB | 2026-10-07 |
| md5-keygen-android | CPU序列号MD5密钥 Android App | 104 MB | 2026-10-07 |
| nginx-stream-ssl-preread | Nginx Stream + SSL Preread 分流 | 80 MB | 2026-10-06 |
| PlateRecApp | 车牌识别系统 | 483 MB | 2026-10-05 |
| current-monitor | 宝林电厂环流监控系统 | 7.6 GB | 2026-10-05 |
| dts_monitor | DTS 分布式光纤温度传感器监控 | 180 MB | 2026-10-05 |
浏览器打开:https://git.zhonjin.com:40717/steven_roc/<仓库名>
例如:
路径: 仓库页面 → 点击 「提交数」 或 「Commits」 链接
URL 格式:
https://git.zhonjin.com:40717/steven_roc/<仓库名>/commits/master
操作说明:
方法 A:通过提交历史回退查看
方法 B:通过切换标签/分支查看
如果有打 Tag:
方法 C:通过 URL 直接访问指定版本
# 查看指定 commit 时的文件列表
https://git.zhonjin.com:40717/steven_roc/<仓库名>/src/<commit_sha>
# 查看指定 commit 时的某个文件
https://git.zhonjin.com:40717/steven_roc/<仓库名>/src/<commit_sha>/<文件路径>
方法 D:对比两个版本之间的差异
# 对比两次提交的差异
https://git.zhonjin.com:40717/steven_roc/<仓库名>/compare/<旧commit_sha>...<新commit_sha>
# 查看文件内容(带语法高亮)
https://git.zhonjin.com:40717/steven_roc/<仓库名>/src/master/<文件路径>
# 查看文件原始内容(纯文本,可直接复制)
https://git.zhonjin.com:40717/steven_roc/<仓库名>/raw/master/<文件路径>
# 查看文件的提交历史(这个文件被改了哪几次)
https://git.zhonjin.com:40717/steven_roc/<仓库名>/commits/master/<文件路径>
# 查看某个文件在某个版本的内容
https://git.zhonjin.com:40717/steven_roc/<仓库名>/raw/<commit_sha>/<文件路径>
| 下载方式 | 操作 |
|---|---|
| ZIP 归档 | 仓库页 → 点击 「克隆/下载」 → 「下载 ZIP」 |
| 指定版本 ZIP | 仓库页 → 「提交数」 → 某次提交 → 「<>」 → 「下载 ZIP」 |
| 指定分支/标签 | 仓库页 → 分支选择器切换到目标分支/标签 → 「下载 ZIP」 |
直接下载链接:
# 最新 master 分支
https://git.zhonjin.com:40717/steven_roc/<仓库名>/archive/master.zip
# 指定 commit
https://git.zhonjin.com:40717/steven_roc/<仓库名>/archive/<commit_sha>.zip
| 功能 | 入口 |
|---|---|
| 📁 浏览文件 | 仓库主页 |
| 📝 查看提交历史 | 「提交数」 链接 |
| 🔍 搜索代码 | 仓库页搜索框 |
| 📊 查看文件修改历史 | 文件页 → 「历史」 |
| 🔀 查看分支列表 | 「分支」 下拉菜单 |
| 🏷️ 查看标签/版本 | 「标签」 链接 |
| 📥 下载归档 | 「克隆/下载」 → 「下载 ZIP」 |
| ⚙️ 仓库设置 | 「设置」 选项卡 |
# HTTPS 克隆
git clone https://git.zhonjin.com:40717/steven_roc/<仓库名>.git
cd <仓库名>
# SSH 克隆(需先配置 SSH Key)
git clone git@git.zhonjin.com:steven_roc/<仓库名>.git
# 浅克隆(只拉最新一次提交,速度快)
git clone --depth 1 https://git.zhonjin.com:40717/steven_roc/<仓库名>.git
# 查看提交历史
git log --oneline
# 查看某个 commit 的详细改动
git show <commit_sha>
# 查看某个 commit 时的某个文件内容
git show <commit_sha>:<文件路径>
# 回退到上一个版本(保留改动在工作区)
git reset --soft HEAD~1
# 回退到上一个版本(彻底丢弃改动)
git reset --hard HEAD~1
# 切换到某个历史版本查看(不改变当前分支)
git checkout <commit_sha>
# 回到最新
git checkout master
# 1. 拉取最新代码
git pull origin master
# 2. 查看改了什么
git status
git diff
# 3. 添加并提交
git add -A
git commit -m "描述你改了什么"
# 4. 推送到 Gogs
git push origin master
# 创建并切换到新分支
git checkout -b feature-xxx
# 推送新分支到远程
git push -u origin feature-xxx
# 合并分支到 master
git checkout master
git merge feature-xxx
# 删除远程分支
git push origin --delete feature-xxx
# 创建标签
git tag -a v1.0.0 -m "版本 1.0.0 发布"
# 推送标签到 Gogs
git push origin v1.0.0
# 推送所有标签
git push origin --tags
# 查看所有标签
git tag -l
# 切换到某个标签
git checkout v1.0.0
所有 API 请求都需要 Access Token:
# Header 方式(推荐)
curl -H "Authorization: token <你的Access_Token>" <URL>
# URL 参数方式
curl "<URL>?token=<你的Access_Token>"
BASE="https://git.zhonjin.com:40717/api/v1"
# 列出所有仓库
curl -sk -H "Authorization: token $TOKEN" "$BASE/user/repos"
# 创建仓库
curl -sk -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"name":"新仓库名","description":"描述","private":false}' \
"$BASE/user/repos"
# 获取仓库信息
curl -sk -H "Authorization: token $TOKEN" "$BASE/repos/steven_roc/<仓库名>"
# 删除仓库
curl -sk -X DELETE -H "Authorization: token $TOKEN" "$BASE/repos/steven_roc/<仓库名>"
# 获取目录文件列表
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/contents/"
# 获取文件内容(base64 编码)
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/contents/README.md"
# 获取文件原始内容(纯文本)
curl -sk -H "Authorization: token $TOKEN" \
"https://git.zhonjin.com:40717/steven_roc/<仓库名>/raw/master/README.md"
# 创建/更新文件
curl -sk -X PUT -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{
"message": "update README",
"content": "'$(base64 -w0 README.md)'"
}' \
"$BASE/repos/steven_roc/<仓库名>/contents/README.md"
# 删除文件
curl -sk -X DELETE -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"message":"delete file","sha":"<文件sha>"}' \
"$BASE/repos/steven_roc/<仓库名>/contents/<文件路径>"
# 查看提交列表
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/commits?sha=master&limit=10"
# 查看单个提交详情
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/git/commits/<commit_sha>"
# 查看某个提交的 diff
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/commits/<commit_sha>/diff"
# 查看所有分支
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/branches"
# 查看所有标签
curl -sk -H "Authorization: token $TOKEN" \
"$BASE/repos/steven_roc/<仓库名>/tags"
# 创建标签
curl -sk -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"tag_name":"v1.0.0","message":"版本1.0","target":"master"}' \
"$BASE/repos/steven_roc/<仓库名>/tags"
# 下载指定分支 ZIP
curl -sk -H "Authorization: token $TOKEN" \
-o repo.zip \
"https://git.zhonjin.com:40717/steven_roc/<仓库名>/archive/master.zip"
# 下载指定标签 ZIP
curl -sk -H "Authorization: token $TOKEN" \
-o repo-v1.zip \
"https://git.zhonjin.com:40717/steven_roc/<仓库名>/archive/v1.0.0.zip"
# 下载指定 commit ZIP
curl -sk -H "Authorization: token $TOKEN" \
-o repo-specific.zip \
"https://git.zhonjin.com:40717/steven_roc/<仓库名>/archive/<commit_sha>.zip"
#!/bin/bash
# git_gogs_push.sh - 完整推送脚本
# 用法: ./git_gogs_push.sh [提交说明]
set -euo pipefail
COMMIT_MSG="${1:-auto sync: $(date '+%Y-%m-%d %H:%M:%S')}"
GOGS_URL="https://git.zhonjin.com:40717"
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$REPO_DIR"
# 检查是否有变更
if [[ -z "$(git status --porcelain)" ]]; then
echo "✅ 没有变更,跳过推送"
exit 0
fi
# 显示变更内容
echo "📋 检测到以下变更:"
git status --short
# 添加、提交、推送
git add -A
git commit -m "$COMMIT_MSG"
git push origin master
echo "✅ 推送完成: $COMMIT_MSG"
echo "🔗 仓库: $GOGS_URL/steven_roc/$(basename "$REPO_DIR")"
#!/bin/bash
# git_gogs_pull.sh - 完整拉取脚本
# 用法: ./git_gogs_pull.sh
set -euo pipefail
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$REPO_DIR"
echo "📥 拉取最新代码..."
git pull --rebase origin master
echo ""
echo "📋 最近 5 次提交:"
git log --oneline -5
echo ""
echo "📁 当前文件:"
ls -la
#!/bin/bash
# gogs_backup_all.sh - 备份 Gogs 上所有仓库
# 用法: ./gogs_backup_all.sh [备份目录]
set -euo pipefail
TOKEN="你的Access_Token"
GOGS_URL="https://git.zhonjin.com:40717"
BACKUP_DIR="${1:-./gogs_backup_$(date '+%Y%m%d')}"
API="$GOGS_URL/api/v1"
mkdir -p "$BACKUP_DIR"
echo "📦 开始备份所有仓库到 $BACKUP_DIR"
# 获取所有仓库
repos=$(curl -sk -H "Authorization: token $TOKEN" "$API/user/repos" | \
python3 -c "import sys,json; [print(r['name']) for r in json.loads(sys.stdin.read())]")
for repo in $repos; do
echo " 📥 正在备份: $repo"
curl -sk -H "Authorization: token $TOKEN" \
-o "$BACKUP_DIR/${repo}.zip" \
"$GOGS_URL/steven_roc/$repo/archive/master.zip"
done
echo ""
echo "✅ 备份完成!共 $(echo "$repos" | wc -l) 个仓库"
echo "📁 备份目录: $BACKUP_DIR"
ls -lh "$BACKUP_DIR"
# 1. 生成密钥
ssh-keygen -t ed25519 -C "steven_roc@zhonjin.com"
# 2. 查看公钥
cat ~/.ssh/id_ed25519.pub
# 3. 添加到 Gogs
# 登录 → 右上角头像 → 设置 → SSH 密钥 → 添加密钥
# 4. 配置 SSH config(免端口参数)
cat >> ~/.ssh/config << 'EOF'
Host git.zhonjin.com
HostName git.zhonjin.com
Port 40717
User git
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
EOF
# 5. 测试连接
ssh -T -p 40717 git@git.zhonjin.com
| 问题 | 原因 | 解决方案 |
|---|---|---|
| SSL 证书错误 | 自签名证书 | GIT_SSL_NO_VERIFY=true 或 git config http.sslVerify false |
| 401 Unauthorized | Token 过期 | Gogs 设置 → 应用 → 重新生成 Token |
| push 被拒绝 | 远程有更新 | 先 git pull --rebase 再 push |
| 中文文件名乱码 | 编码问题 | git config core.quotepath false |
| 大文件推送超时 | 文件太大 | 使用 git lfs 或分批推送 |
| 忘记 Token | 安全原因无法找回 | 重新生成新 Token |
本手册覆盖 Git Gogs 的完整操作:Web 界面、命令行、API、自动同步脚本、备份方案。