搭建本地 Git 服务器

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


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

步骤 1:安装 Git

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

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

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

bash 复制代码
# 克隆仓库(将 <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
bash 复制代码
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:配置管理员权限
bash 复制代码
# 将你的公钥(id_rsa.pub)上传到服务器
ssh git@<server_ip> 'git init'  # 初始化管理员权限
步骤 3:管理仓库与权限

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

conf 复制代码
repo    repo1
    RW+     =   admin user1

repo    repo2
    RW      =   @dev-team

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

步骤 1:下载并安装 Gitea
bash 复制代码
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:启动服务
bash 复制代码
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 用户所有:

      bash 复制代码
      chown -R git:git /home/git/repo.git
      chmod -R 755 /home/git/repo.git
  2. 防火墙配置

    • 开放服务器的 SSH 端口(默认 22)或 Gitea 端口(如 3000):

      bash 复制代码
      sudo ufw allow 22/tcp
      sudo ufw allow 3000/tcp
  3. 备份与安全

    • 定期备份裸仓库目录(如 /home/git/repo.git)。

    • 禁用 git 用户的 Shell 登录权限(提升安全性):

      bash 复制代码
      sudo usermod -s /usr/bin/git-shell git

选择建议

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

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