当前位置: 首页 > 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.dtcms.com/a/323864.html

相关文章:

  • Beelzebub靶机攻略
  • 昼夜节律修复方案(2025.08.10-08.17)
  • 基于python高校固定资产管理系统
  • vue3项目中在一个组件中点击了该组件中的一个按钮,那么如何去触发另一个组件中的事件?
  • 计算机网络:(十四)传输层(下)详细讲解TCP报文段的首部格式,TCP 可靠传输的实现与TCP 的流量控制
  • 纳维 - 斯托克斯方程的存在性与光滑性:流体世界的千年谜题
  • Dify集成 Echarts 实现智能数据报表集成与展示实战详解
  • 【东枫科技】FR2/FR3 毫米波原型开发平台
  • ubuntu 安装内核模块驱动 DKMS 介绍
  • 基于Ubuntu20.04的环境,编译QT5.15.17源码
  • 瑞芯微 RK3588 平台驱动开发 学习计划
  • Ubuntu 22.04 离线环境下完整安装 Anaconda、CUDA 12.1、NVIDIA 驱动及 cuDNN 8.9.3 教程
  • 设计模式(Design Pattern)
  • vue和react和uniapp的状态管理分别是什么,并且介绍和怎么使用
  • FreeRTOS 任务与中断函数:运行机制、关键区别与使用准则
  • 如何利用RabbitMQ延迟消息优化电商支付
  • MPLS特性之PHP(Penultimate Hop Popping)
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 从神经网络语言模型(NNLM)到Word2Vec:自然语言处理中的词向量学习
  • NLP——TF-IDF算法
  • WebAssembly技术详解:从浏览器到云原生的高性能革命
  • 麒麟系统播放 pptx
  • Spring MVC 九大组件源码深度剖析(二):LocaleResolver - 国际化背后的调度者
  • 集成电路学习:什么是Parameter Server参数服务器
  • 【软件测试】BUG篇 — 详解
  • 从 `unittest` 到 `pytest`:探寻 Python 测试框架的优雅进化与社区选择*
  • Java 后端性能优化实战:从 SQL 到 JVM 调优
  • Spring 依赖注入、AOP代理
  • GC如何判断对象可以被回收?
  • 分享一个基于Python和Hadoop的的电信客户特征可视化分析平台 基于Spark平台的电信客服数据存储与处理系统源码