当前位置: 首页 > news >正文

搭建本地 Git 服务器

以下是搭建本地 Git 服务器的通用步骤,支持团队协作或私有仓库管理:


方法 1:基于 SSH 的简单部署(适合小团队)

步骤 1:安装 Git

在服务器上安装 Git(以 Ubuntu 为例):

sudo apt update
sudo apt install git
步骤 2:创建 Git 用户
sudo adduser git          # 新建用户 "git"
sudo passwd git           # 设置密码(可选)
步骤 3:初始化裸仓库
su - git                  # 切换到 git 用户
mkdir /home/git/repo.git # 创建仓库目录(以 "repo" 为例)
cd repo.git
git init --bare          # 初始化裸仓库(不包含工作目录)
步骤 4:客户端克隆与推送

团队成员可通过 SSH 地址访问:

# 克隆仓库(将 <server_ip> 替换为服务器 IP)
git clone git@<server_ip>:/home/git/repo.git# 提交代码后推送
git add .
git commit -m "Initial commit"
git push -u origin main

方法 2:使用 Gitolite(权限精细管理)

步骤 1:安装 Gitolite
sudo apt install gitzlib1g
wget https://download.github.com/gitolite-4.11.5.tar.gz
tar -xzvf gitolite-4.11.5.tar.gz
cd gitolite-4.11.5
sudo mkdir -p /usr/share/gitolite
sudo make install
步骤 2:配置管理员权限
# 将你的公钥(id_rsa.pub)上传到服务器
ssh git@<server_ip> 'git init'  # 初始化管理员权限
步骤 3:管理仓库与权限

通过 git@gitserver:gitolite-admin 仓库编辑 conf/gitolite.conf 文件,定义用户组和仓库权限:

repo    repo1RW+     =   admin user1repo    repo2RW      =   @dev-team

方法 3:使用 Gitea(Web 界面 + 全功能)

步骤 1:下载并安装 Gitea
wget https://dl.gitea.io/gitea/release/gitea-1.20.3-linux-amd64
chmod +x gitea-1.20.3-linux-amd64
sudo mv gitea-1.20.3-linux-amd64 /usr/local/bin/gitea
步骤 2:启动服务
sudo mkdir -p /data/gitea
sudo ./usr/local/bin/gitea web -workDir "/data/gitea"
步骤 3:访问 Web 界面

浏览器访问 http://<server_ip>:3000,按提示创建管理员账号并配置仓库。


关键注意事项

  1. SSH 密钥管理

    • 客户端需提前生成 SSH 密钥(ssh-keygen),并将公钥(id_rsa.pub)添加到服务器。
    • 若遇到权限问题,确保仓库目录权限为 git 用户所有:
      chown -R git:git /home/git/repo.git
      chmod -R 755 /home/git/repo.git
      
  2. 防火墙配置

    • 开放服务器的 SSH 端口(默认 22)或 Gitea 端口(如 3000):
      sudo ufw allow 22/tcp
      sudo ufw allow 3000/tcp
      
  3. 备份与安全

    • 定期备份裸仓库目录(如 /home/git/repo.git)。
    • 禁用 git 用户的 Shell 登录权限(提升安全性):
      sudo usermod -s /usr/bin/git-shell git
      

选择建议

  • 简单快速:SSH 裸仓库(适合 3-5 人团队)。
  • 权限精细:Gitolite(支持复杂权限分组)。
  • 全功能 Web 界面:Gitea(接近 GitHub/GitLab 体验)。

如果需要更具体的配置(如 HTTPS 访问、Docker 部署等),请告知您的需求!

http://www.xdnf.cn/news/1274905.html

相关文章:

  • nginx-主配置文件
  • Flask多进程数据库访问问题详解
  • Words or Vision Do Vision-Language Models Have Blind Faith in Text
  • Baumer高防护相机如何通过YoloV8深度学习模型实现道路坑洼的检测识别(C#代码UI界面版)
  • 基于FFmpeg的B站视频下载处理
  • 配置timer控制 IO的输出(STC8)
  • 浏览器CEFSharp88+X86+win7 之js交互开启(五)
  • 【LeetCode】102 - 二叉树的层序遍历
  • MySQL 处理重复数据详细说明
  • DBAPI 实现不同角色控制查看表的不同列
  • SQL约束:数据完整性的守护者
  • 【面试场景题】异地多活改造方案
  • 实现两个开发板的串口通讯(基于STC8实现)
  • Oracle lgwr触发条件
  • c语言常见错误
  • 深入解析微服务分布式事务的原理与优化实践
  • 【代码随想录day 16】 力扣 513.找树左下角的值
  • Linux 路由子系统深度分析:框架、实现与代码路径
  • MariaDB 数据库管理
  • 活动策划(展会、年会),在线工具能快速出邀请函不?
  • Python 实例属性和类属性
  • 为wordpress顶部header.php文件中调用不同的标题和摘要
  • H3C(基于Comware操作系统)与eNSP平台(模拟华为VRP操作系统)的命令差异
  • Shell脚本-了解i++和++i
  • 堆(Java实现)
  • Spark学习(Pyspark)
  • 整数规划-分支定界
  • 【软件测试】BUG篇 — 详解
  • ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)
  • 33.搜索旋转排序数组