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^
  2. 进入控制面板 > 连接性 > 终端机和 SNMP > 终端 - 启用 SSH 服务。^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知识中心与文档库 ↩︎ ↩︎
相关推荐
yyycqupt3 小时前
git使用(一)
git
Kkooe7 小时前
GitLab|数据迁移
运维·服务器·git
Beekeeper&&P...7 小时前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
Stara051112 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
lsswear12 小时前
GIT 操作
git
勋勋勋勋小勋勋12 小时前
git分支合并某一次提交
git
PandaCave14 小时前
git常用命令以及注意事项总结
git
算你狠 - ZGX18 小时前
Git使用
git
Lojarro1 天前
【后端】版本控制
git·subversion