在群晖NAS上使用Git Server

本文详细介绍了如何在群晖NAS上搭建Git服务器并配置客户端访问。

第一步:在群晖NAS上进行配置

1. 安装 Git Server

打开群晖的"套件中心",搜索Git Server,然后点击安装。

2. 创建专用用户

为了安全和方便管理,建议创建一个专门用于Git操作的用户。

  • 进入"控制面板" > "用户与群组"。
  • 点击"新增",创建一个新用户,例如用户名为gitcode(根据自己的要求取)。
  • 为该用户设置一个强密码。

3. 创建共享文件夹

这个文件夹将用来存放所有的Git仓库。

  • 进入"控制面板" > "共享文件夹"。
  • 点击"新增",创建一个名为GitRepo (自己取)的共享文件夹。

4. 配置用户权限

确保gitcode用户有权限访问GitRepo 文件夹。

  • 在"用户与群组"中,编辑gitcode 用户。
  • 在"权限"选项卡中,将GitRepo 文件夹的权限设置为"可读写"。
  • 注意的是要使用SSH进行登录,用户必须设置为管理员分组。

5. 启用 Git Server 服务

  • 打开已安装的Git Server 套件。

  • 在用户列表中,勾选创建的用户,以允许该用户访问Git服务。

6. 开启 SSH 功能

Git通过SSH协议进行通信,因此需要开启SSH。

  • 进入"控制面板" > "终端机和SNMP"。
  • 勾选"启动SSH功能",端口号默认为22,你也可以自定义一个端口。

第二步:在客户端(你的电脑)上进行配置(可选设置,用于免密登录)

1. 生成 SSH 密钥对

在你的电脑上打开终端(Windows用户可使用 Git Bash),运行以下命令来生成SSH密钥:

bash 复制代码
ssh-keygen -t ecdsa

一路按回车键即可,这会在~/.ssh/目录下生成公钥(id_ecdsa.pub)和私钥。

2. 配置免密登录 (可选但推荐)

为了避免每次操作都输入密码,可以将公钥配置到NAS上。

  • 获取公钥内容 :在终端中运行cat ~/.ssh/id_ecdsa.pub,复制显示的全部字符。(使用Git Bash)
  • 登录NAS并创建授权文件
    1. 使用创建的git用户gitcode,通过SSH登录你的NAS:ssh 用户名@你的NAS_IP地址 -p 22。示例:ssh gitcode@192.168.1.1 -p 22
    2. 依次执行以下命令:
bash 复制代码
mkdir ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
  1. 将刚才复制的公钥内容粘贴进去,然后按Ctrl+O保存,再按Ctrl+X 退出。
  2. 运行chmod 600 ~/.ssh/authorized_keys 设置正确的权限。

第三步:创建并使用你的第一个Git仓库

1. 在NAS上初始化一个裸仓库

裸仓库(Bare Repository)是专门用于远程共享的仓库,不包含工作目录。

  • 通过SSH登录到NAS(使用gitcode 用户)。
  • 进入你的共享文件夹:cd /volume1/GitRepovolume1 是你的存储空间,路径可能不同)。
  • 创建并初始化一个裸仓库:
bash 复制代码
mkdir my_project.git
cd my_project.git
git init --bare

2. 从本地电脑克隆仓库

回到你本地电脑的终端,执行以下命令将远程仓库克隆到本地:

bash 复制代码
git clone ssh://gitcode@你的NAS_IP地址:22/volume1/GitRepo/my_project.git

如果是首次连接,系统会询问你是否继续连接,输入yes。如果未配置免密登录,则需要输入gitcode 用户的密码。

3. 开始你的代码管理

现在,你可以在本地的my_project 文件夹中进行正常的Git操作了:

  • git add .:添加所有修改的文件。
  • git commit -m "提交信息":提交更改。
  • git push:将更改推送到群晖上的远程仓库。
  • git pull:从远程仓库拉取最新的代码。
相关推荐
Patrick_Wilson15 小时前
为什么gitlab的MR会默认有一个merge commit
前端·git·gitlab
是乐乐啊呀15 小时前
版本控制 GIT 和 SVN
git·svn
夜鸣笙笙18 小时前
Git详细安装流程
git
瑞码空间1 天前
git知识点黄金笔记
笔记·git·elasticsearch
----云烟----1 天前
Git 提交忽略某些文件方法
git
切糕师学AI1 天前
如何查看已合并到 master 分支的所有分支?Git 分支清理指南
大数据·git·elasticsearch
DevUp2 天前
一个管「引」,一个管「抄」:Submodule 和 Subtree 到底差在哪
git·前端工程化
lingran__2 天前
Git 完全指南(三):远程仓库与标签管理
开发语言·git·gitee·ssh·团队协作·远程仓库·分布式版本控制
lingran__2 天前
Git 完全指南(二):分支管理
git·分支管理·版本控制·团队协作·多人开发·git flow
必须会一定会2 天前
Agent Handoff v0.6.0 跨电脑同步:Git、EVENTS.jsonl、CONTEXT.md 使用方法
人工智能·git·ai编程