当前位置:首页 > 行业动态 > 正文

如何快速搭建Git服务器仓库?

在Git中创建服务器仓库需通过SSH登录服务器,执行 mkdir创建目录并进入,使用 git init --bare初始化为裸仓库,本地项目添加远程仓库地址 git remote add origin user@server:/path/to/repo.git,通过 git push推送代码完成部署,裸仓库不包含工作区,专用于共享协作。

通过SSH连接到服务器
确保已具备服务器的访问权限(SSH密钥或用户名密码)。

ssh username@server_ip

安装Git(如未安装)
在服务器上通过包管理器安装Git:

# Ubuntu/Debian
sudo apt update && sudo apt install git -y
# CentOS/RHEL
sudo yum install git -y

方法1:创建裸仓库(推荐)

裸仓库(Bare Repository)是Git服务器仓库的标准形式,仅存储版本历史,不包含工作目录。

  1. 创建仓库目录

    mkdir -p /opt/git/project.git
    cd /opt/git/project.git
  2. 初始化裸仓库

    git init --bare
  3. 设置权限(关键步骤)

    sudo chown -R git:git /opt/git/project.git

    注:建议创建一个专用用户(如git)管理仓库,避免使用root账户。


本地开发机操作
在本地机器上克隆远程仓库:

git clone git@server_ip:/opt/git/project.git

方法2:自动化部署(钩子脚本)

通过Git钩子实现代码提交后自动同步到服务器目录(如Web根目录)。

  1. 在服务器上创建接收仓库

    mkdir -p /var/www/project
    cd /var/www/project
    git init
  2. 在裸仓库中添加钩子脚本
    编辑裸仓库的hooks/post-receive文件:

    #!/bin/sh
    TARGET="/var/www/project"
    GIT_DIR="/opt/git/project.git"
    BRANCH="main"
    while read oldrev newrev ref
    do
      if [ "$ref" = "refs/heads/$BRANCH" ];
      then
        echo "Deploying $BRANCH to $TARGET..."
        git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
      fi
    done
  3. 赋予脚本执行权限

    chmod +x /opt/git/project.git/hooks/post-receive

方法3:使用第三方工具(高可维护性)

推荐工具:

  • Gitea:轻量级自托管Git服务
  • GitLab:企业级DevOps平台

以Gitea为例:

  1. 通过Docker快速安装:
    docker run -d --name=gitea -p 3000:3000 -v /opt/gitea:/data gitea/gitea:latest
  2. 访问 http://server_ip:3000 完成初始化配置。
  3. 创建仓库后,通过SSH或HTTP克隆使用。

安全增强建议

  1. SSH密钥认证
    禁用密码登录,仅允许密钥对连接:

    # 本地生成密钥对
    ssh-keygen -t ed25519
    # 上传公钥到服务器
    ssh-copy-id git@server_ip
  2. 防火墙配置
    仅开放必要端口(如SSH的22端口、HTTP的80/443端口)。

  3. 定期备份
    使用rsynctar定时备份仓库目录:

    tar -czvf backup_$(date +%F).tar.gz /opt/git

常见问题排查

  • 权限拒绝错误:检查目录所有权(chown -R git:git)。
  • 钩子脚本不生效:确保脚本有执行权限,且路径无拼写错误。
  • 克隆速度慢:优化服务器网络或使用git config --global pack.windowMemory 256m

引用说明

  • Git官方文档:https://git-scm.com/doc
  • Gitea官方指南:https://docs.gitea.io
  • GitLab安装手册:https://docs.gitlab.com/ee/install/
  • Nginx反向代理配置:https://nginx.org/en/docs/
  • Let’s Encrypt HTTPS:https://letsencrypt.org

0