NAS搭建自己的Git私服

去年公司采购了一台NAS设备,本来是给文化业务部门做素材库用的,结果我发现磁盘利用率很低,看着那么贵的希捷酷狼闲置真心痛啊!突然想到目前公司软件研发的源码管理分两块,一个是gitee,一个是阿里云ECS服务器搭建的Gitblit,这两个资源已经被挤占的很严重,还要另外开销一笔费用,不如集中起来管理到一个设备上。

名称 版本 备注
群晖NAS DS1821+
群晖NAS操作系统 DSM 7.2.1-69057 Update 5
群晖NAS套件Git Server 2.39.1-1079
终端机SSH客户端 Xshell 7.0.0040
终端机Git客户端 2.45.1

NAS创建用户及用户组

  1. 使用管理员登录NAS控制台。
  2. 进入控制面板 > 文件共享 > 共享文件夹 > 新增 - 名称 GitRepo。
  3. 进入控制面板 > 文件共享 > 用户与群组 > 用户账号 > 新增 - 创建用户 - 名称 gituser。(PS:几个开发人员就创建几个)
  4. 进入控制面板 > 文件共享 > 用户与群组 > 用户群组 > 新增 - 群组名称 gitdev。(PS:为了方便后续文件目录按群组授权)
  5. 进入控制面板 > 文件共享 > 共享文件夹 > 选择 GitRepo - 编辑 - 权限 - gituser 勾选 可读写。

安装Git套件并授权

  1. 进入套件中心 > 所有套件 > 搜索 - Git Server - 安装。
  2. 打开套件Git Server > 允许访问 - 勾选 gituser。

配置SSH访问

  1. 进入控制面板 > 文件共享 > 用户与群组 > 高级设置 > 家目录 - 启用家目录服务。[1](#1)
  2. 进入控制面板 > 连接性 > 终端机和 SNMP > 终端 - 启用 SSH 服务。[1](#1)

终端机通过SSH连接NAS服务器的Git Server并用linux命令创建和授权git目录

  1. 用Xshell连接NAS,类似连接liunx系统。(PS:NAS网络访问配置我是采用了DDNS并在路由器进行了 22 端口转发。)
  2. 我习惯Git仓库的目录按照项目来分组,所以在GitRepo目录下按照项目名称再创建一层ProjectName目录,ProjectName下再创建各个源码工程的Git仓库目录。(PS:当然也可以通过分支的方式来一个仓库管理多个项目,一切看个人习惯!)

我的仓库目录结构基本如下所示:

GitRepo------|

-----------ProjectName------|

-------------------------CodeProject1.git

-------------------------CodeProject2.git

-------------------------CodeProject3.git

命令如下

bash 复制代码
cd /volume1/GitRepo/
mkdir ProjectName
cd ProjectName/
mkdir CodeProject.git
  1. 初始化git仓库,加属性--bare代表创建远程仓库。
bash 复制代码
cd CodeProject.git/
git init --bare
  1. 授权git用户可以读写源代码仓库目录。(PS: 这里我直接把整个GitRepo递归授权给了整个gitdev用户组,建议还是单独对用户授权!)
bash 复制代码
sudo chown -R :gitdev GitRepo

针对某个用户gituser授权某个Git源码仓库目录,具体详查liunx命令。

bash 复制代码
sudo chown -R gituser CodeProject.git 

注意,执行该授权命令时所在的目录。

迁移本地源码工程的Git远程仓库地址

  1. 打开本地git bash窗口,执行
bash 复制代码
git clone ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git
  1. 如果你本地已经有源码工程,可以直接去修改一下远程仓库地址即可。(PS:记得要把本地仓库镜像方式push一下,这样所有之前的分支和历史信息都会保留。)
    例如: IDEA中Git > manage Remotes > URL - 更新为NAS的地址,即ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git。

  1. 官方文档:Synology知识中心与文档库 ↩︎ ↩︎
相关推荐
我叫张小白。11 小时前
Git 分支管理与团队协作
git
DogDaoDao12 小时前
Windows 下 Git 报错:`touch` 无法识别 —— 原因分析与 7 种解决方案(从入门到精通)
windows·git·程序员·npm·powershell·cmd·touch
caicai_xiaobai13 小时前
Ubuntu上Git安装步骤
linux·git·ubuntu
come1123414 小时前
git 区分是 Git 分支还是 worktree 路径名
git
憧憬成为java架构高手的小白14 小时前
git多人工作之个人规范使用【ai+个人理解】
git
CVer儿14 小时前
git简单操作
git
Andya_net15 小时前
Git | Git 核心命令深入解析:从原理到实战
大数据·git·elasticsearch
wh_xia_jun16 小时前
给小白的 Maven 命令行执行测试 完整指南
git·maven·intellij-idea
专业白嫖怪16 小时前
H3C UniServer R4950 G5 服务器压测实战:13根内存条24小时压力测试全流程
git
我先去打把游戏先16 小时前
Ubuntu虚拟机(服务器版本)Git安装教程(附常用命令)——从零开始掌握版本控制
服务器·c语言·c++·git·嵌入式硬件·物联网·ubuntu