Gitea 在群晖NAS上的工作原理(局域网本地开发场景)
Gitea 本质是Git服务端,只负责存储代码仓库的版本历史、提交记录、分支、标签;不自动扫描你台式机本地硬盘文件夹。台式机多个硬盘、不同目录里的代码,需要你手动用Git命令,把各个项目分别推送到NAS Gitea的仓库,实现版本管理与备份。
一、完整工作流程
- NAS上Gitea:存放所有代码仓库的远端副本(版本库,
.git),是你的代码备份中心。 - 台式机本地(多硬盘、多文件夹):这是工作区,你在这里写代码。
- 每个独立项目,单独对应Gitea上一个仓库。
- 哪怕项目在D盘、E盘、不同硬盘,互相独立,互不干扰。
- 操作逻辑(每个项目只需要一次初始化)
1)在Gitea网页新建仓库(比如
lua-script),Gitea会生成仓库地址:http://192.168.0.51:3000/xxx/lua-script.git2)台式机打开终端,进入这个项目本地文件夹(例如E:\code\lua-script)git init git add . git commit -m "初始化项目" git remote add origin http://192.168.0.51:3000/xxx/lua-script.git git push -u origin main3)后续每次修改代码之后:
git add . git commit -m "本次修改备注" git pushgit push:把本地提交的版本,上传备份到NAS的Gitea远端仓库。git pull:从NAS拉取远端最新版本到本地电脑。
⚠️重点区分:
- 本地文件夹(台式机硬盘):你看到的源码文件,是工作副本,没有完整历史。删了本地文件,只要Gitea远端仓库还在,随时可以
git clone下载全部历史版本。- Gitea仓库(NAS):保存完整Git版本库,所有提交记录、历史文件、分支,属于代码备份。
二、多硬盘、多项目怎么管理
台式机多个硬盘,每个代码项目是独立的,一个项目对应Gitea一个仓库:
- E盘:
E:\game_script→ Gite新建仓库game_script,单独push - D盘:
D:\web_project→ Gite新建仓库web_project,单独push - F盘:
F:\python_tools→ Gite新建仓库python_tools,单独push
✅ 优点:项目隔离,互不影响。Gitea不会自动遍历你电脑所有硬盘,完全由你控制哪些文件夹纳入版本管理。 ❌ 不会自动备份:不执行git push,NAS Gitea不会收到任何改动。修改完代码必须手动提交推送,才会备份到NAS。
三、版本管理能力(你能做什么)
- 保存每一次提交快照,可以随时回退到任意历史版本,查看文件改动。
- 支持多分支开发(比如开发分支、稳定发布分支)。
- 局域网访问,台式机不用外网,直接走内网IP访问Gitea。
- 代码都保存在NAS的挂载目录,NAS本身可以做RAID/快照,双重保护代码。
四、常见误区
- ❌ Gitea不能自动监控台式机文件夹,文件改动自动同步。Git是手动提交推送模型,不是实时同步盘(像Synology Drive那种实时同步不一样)。
如果你想要:文件改动自动推送,可以写简单批处理脚本,监听文件变化自动执行git提交推送,但不属于Gitea原生功能。
- ❌ 不要把多个无关项目,全部放到同一个Gitea仓库。会造成版本混乱,推荐一个项目一个仓库。
- ❌ 不要把二进制大文件(虚拟机镜像、压缩包)放进Git仓库,Git不适合管理大体积文件,代码仓库只放源码文本。
五、备份层面补充
- Gitea本身的数据:仓库数据、账号,存在NAS的docker挂载目录。建议对Gitea的数据目录做NAS定时快照备份。
- 代码双重保障:台式本地源码 + NAS Gitea远端仓库,就算台式机硬盘损坏,所有代码历史都还在NAS。
六、可选方案对比
| 方案 | 用途 |
|---|---|
| Gitea+Git | 源码版本管理,看历史改动、分支,适合代码开发,推荐你的场景 |
| 群晖Drive/同步盘 | 文件实时镜像同步,没有版本对比、分支功能,适合普通文档,不适合代码版本 |