Gitea 在群晖NAS上的工作原理(局域网本地开发场景)

Gitea 本质是Git服务端,只负责存储代码仓库的版本历史、提交记录、分支、标签;不自动扫描你台式机本地硬盘文件夹。台式机多个硬盘、不同目录里的代码,需要你手动用Git命令,把各个项目分别推送到NAS Gitea的仓库,实现版本管理与备份。

一、完整工作流程

  1. NAS上Gitea:存放所有代码仓库的远端副本(版本库,.git),是你的代码备份中心。
  2. 台式机本地(多硬盘、多文件夹):这是工作区,你在这里写代码。
    • 每个独立项目,单独对应Gitea上一个仓库。
    • 哪怕项目在D盘、E盘、不同硬盘,互相独立,互不干扰。
  3. 操作逻辑(每个项目只需要一次初始化) 1)在Gitea网页新建仓库(比如lua-script),Gitea会生成仓库地址:http://192.168.0.51:3000/xxx/lua-script.git 2)台式机打开终端,进入这个项目本地文件夹(例如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 main

    3)后续每次修改代码之后:

     git add .
     git commit -m "本次修改备注"
     git push

    git 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。

三、版本管理能力(你能做什么)

  1. 保存每一次提交快照,可以随时回退到任意历史版本,查看文件改动。
  2. 支持多分支开发(比如开发分支、稳定发布分支)。
  3. 局域网访问,台式机不用外网,直接走内网IP访问Gitea。
  4. 代码都保存在NAS的挂载目录,NAS本身可以做RAID/快照,双重保护代码。

四、常见误区

  1. ❌ Gitea不能自动监控台式机文件夹,文件改动自动同步。Git是手动提交推送模型,不是实时同步盘(像Synology Drive那种实时同步不一样)。

    如果你想要:文件改动自动推送,可以写简单批处理脚本,监听文件变化自动执行git提交推送,但不属于Gitea原生功能。

  2. ❌ 不要把多个无关项目,全部放到同一个Gitea仓库。会造成版本混乱,推荐一个项目一个仓库。
  3. ❌ 不要把二进制大文件(虚拟机镜像、压缩包)放进Git仓库,Git不适合管理大体积文件,代码仓库只放源码文本。

五、备份层面补充

  • Gitea本身的数据:仓库数据、账号,存在NAS的docker挂载目录。建议对Gitea的数据目录做NAS定时快照备份。
  • 代码双重保障:台式本地源码 + NAS Gitea远端仓库,就算台式机硬盘损坏,所有代码历史都还在NAS。

六、可选方案对比

方案 用途
Gitea+Git 源码版本管理,看历史改动、分支,适合代码开发,推荐你的场景
群晖Drive/同步盘 文件实时镜像同步,没有版本对比、分支功能,适合普通文档,不适合代码版本