在 macOS 系统中搭建本地 Git 服务器,可以通过多种方式实现,既满足个人或小型团队的代码管理需求,又能避免将敏感代码上传到公共平台,本文将详细介绍使用 macOS 自带的服务(如 SSH 和共享文件夹)以及第三方工具(如 GitLab、Gogs)搭建本地 Git 服务器的步骤、注意事项及常见问题解决方案。

本地 Git 服务器的优势与应用场景
本地 Git 服务器相较于公共代码托管平台(如 GitHub、GitLab.com),核心优势在于数据安全性、访问速度和自主可控性,对于开发者而言,本地服务器无需依赖网络连接即可进行代码提交和版本控制,适合企业内部项目、个人实验性开发或对数据隐私有严格要求的场景,本地服务器可完全自定义权限管理、备份策略和扩展功能,例如集成 CI/CD 工具或代码审查流程。
基于 macOS 自带工具搭建本地 Git 服务器
准备工作:安装 Git 与创建用户
在搭建服务器前,需确保 macOS 系统已安装 Git,若未安装,可通过 Homebrew 快速安装:
brew install git
安装完成后,验证 Git 版本:
git --version
建议为 Git 服务器创建一个独立用户(如 gituser),避免使用 root 用户操作,提升安全性:

sudo adduser gituser # 根据提示设置密码和用户信息
初始化 Git 仓库
在 gituser 的 home 目录下创建 repositories 文件夹,用于存放所有 Git 仓库,并初始化一个示例仓库:
sudo mkdir -p /Users/gituser/repositories sudo chown -R gituser:gituser /Users/gituser/repositories cd /Users/gituser/repositories git init --bare sample_project.git # --bare 表示创建裸仓库,无需工作目录
配置 SSH 访问(推荐方式)
SSH 是 Git 远程仓库最常用的访问协议,支持加密传输且无需输入密码(通过 SSH 密钥认证)。
-
生成 SSH 密钥:在客户端 macOS 电脑中,打开终端执行:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按提示保存密钥(默认路径为
~/.ssh/id_rsa),并将公钥(id_rsa.pub复制到服务器端。
(图片来源网络,侵删) -
配置服务器 SSH 授权:在服务器端
gituser的 home 目录下创建.ssh文件夹,并添加authorized_keys文件,将客户端公钥粘贴到该文件中:sudo mkdir -p /Users/gituser/.ssh sudo touch /Users/gituser/.ssh/authorized_keys sudo chmod 600 /Users/gituser/.ssh/authorized_keys sudo chown -R gituser:gituser /Users/gituser/.ssh
用文本编辑器打开
authorized_keys,粘贴公钥内容(每行一个公钥)。 -
测试 SSH 连接:在客户端终端中执行:
ssh gituser@localhost
若无需密码即可登录,则 SSH 配置成功。
克隆与推送代码
在客户端电脑中,通过 SSH 克隆服务器上的仓库:
git clone gituser@localhost:/Users/gituser/repositories/sample_project.git
进入克隆后的项目目录,添加文件并提交:
cd sample_project echo "# Initial commit" > README.md git add . git commit -m "Add README" git push origin master
若推送成功,说明本地 Git 服务器已正常运行。
使用共享文件夹搭建简易 Git 服务器
若不希望通过 SSH 访问,可利用 macOS 的共享文件夹功能,实现本地网络内的 Git 仓库访问。
创建共享文件夹
在 Finder 中新建一个文件夹(如 GitRepositories),右键点击“共享权限”,添加 gituser 用户并赋予“读写”权限。
初始化仓库并设置权限
在共享文件夹中初始化裸仓库:
cd /path/to/GitRepositories git init --bare shared_project.git sudo chown -R gituser:gituser shared_project.git
通过本地路径访问
在同一局域网内的其他 macOS 设备上,可通过共享文件夹路径克隆仓库(需确保设备可访问该共享文件夹):
git clone file:///path/to/GitRepositories/shared_project.git
注意:此方式依赖本地网络,且安全性较低(共享文件夹可能被非授权用户访问),建议仅在可信网络环境中使用。
搭建功能更完善的本地 Git 服务器(以 Gogs 为例)
若需要 Web 界面、用户管理、权限控制等高级功能,可部署轻量级 Git 服务器 Gogs(基于 Go 语言开发,资源占用低,适合 macOS)。
安装 Gogs
- 通过 Homebrew 安装:
brew install gogs
- 手动下载安装:访问 Gogs 官网(https://gogs.io)下载 macOS 版本,解压到指定目录(如
/opt/gogs)。
配置 Gogs
进入 Gogs 安装目录,编辑 custom/conf/app.ini 文件,主要修改以下配置:
[server] DOMAIN = localhost HTTP_PORT = 3000 ROOT_URL = http://localhost:3000/ [database] PATH = /opt/gogs/data/gogs.db # 数据库路径 [repository] ROOT = /opt/gogs/repositories # 仓库存储路径
启动 Gogs 服务
通过终端启动 Gogs:
/opt/gogs/gogs web
或使用 Homebrew 安装的 Gogs:
gogs web
访问 Web 界面
打开浏览器,访问 http://localhost:3000,首次访问会进入初始化配置页面,设置管理员账户、数据库类型(默认为 SQLite)等信息,完成后即可通过 Web 界面创建用户、仓库,并支持 HTTPS、LDAP 等高级功能。
本地 Git 服务器的维护与安全
定期备份
- 裸仓库备份:直接复制
repositories文件夹至外部存储设备。 - Gogs 备份:若使用 Gogs,需备份
repositories文件夹和数据库(如 SQLite 的gogs.db文件)。
权限管理
- 限制
gituser的系统权限,避免其访问敏感目录。 - 在 Gogs 中可通过“团队”功能设置仓库的读写权限,精细化管理不同用户的操作权限。
网络安全
- 若需远程访问,建议通过 VPN 或端口转发(结合 SSH 隧道)避免直接暴露服务器端口。
- 定期更新 Git 和服务器软件(如 Gogs),修复安全漏洞。
相关问答 FAQs
问题 1:本地 Git 服务器与 GitHub 有什么区别?如何选择?
解答:本地 Git 服务器数据存储在本地设备或内网中,无需网络即可操作,适合对数据隐私要求高、网络环境不稳定或需要定制化功能的场景;而 GitHub 是公共托管平台,支持多人协作、代码审查、CI/CD 等云端服务,适合开源项目或需要跨团队协作的场景,选择时可根据数据安全性需求、团队规模、网络条件决定:个人实验项目或企业内部敏感代码适合本地服务器,开源项目或分布式团队可优先考虑 GitHub。
问题 2:如何解决本地 Git 服务器“Permission denied (publickey)”错误?
解答:该错误通常由 SSH 密钥认证失败导致,可按以下步骤排查:
- 检查服务器 SSH 配置:确认
authorized_keys文件是否存在,且权限为 600(仅所有者可读写),公钥内容是否完整(末尾无多余空格或换行符)。 - 验证客户端密钥:在客户端执行
ssh -T gituser@localhost,查看是否返回“Permission denied”或“Hi, ...! You've successfully authenticated...”等提示,若提示权限拒绝,可尝试重新生成密钥对并替换服务器端公钥。 - 检查 SSH 服务状态:确保 macOS 的 SSH 服务已启用(系统偏好设置 → 共享 → 远程登录已勾选)。
- 检查用户权限:确认
gituser对仓库目录有读写权限,可通过ls -la /Users/gituser/repositories查看目录所有者。
