目录
前言
在软件开发中,Git 是一个广泛使用的版本控制系统。虽然 GitHub 提供了免费的远程仓库服务,但有时我们需要搭建自己的 Git 服务器,以便更好地管理和控制代码。本文将介绍如何使用裸存储库和 GitLab 搭建 Git 服务器,并详细说明如何管理项目。
一、 使用裸存储库搭建 Git 服务器
1.1 安装 Git
在 Ubuntu 服务器上安装 Git:
sudo apt install git
在 CentOS/RedHat 系统上安装 Git:
yum -y install git-core
在 Fedora 系统上安装 Git:
dnf install git
1.2 创建裸存储库
首先,创建一个 Git 用户组和用户:
groupadd git
useradd git -g git
然后,切换到 Git 用户并创建裸存储库:
sudo su - git
cd /home
mkdir gitrepo
chown git:git gitrepo/
cd gitrepo
git init --bare myproject.git
chown -R git:git myproject.git
1.3 配置 SSH 访问
将需要访问的用户公钥添加到 `/home/git/.ssh/authorized_keys` 文件中:
cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys
将用户的公钥(位于 `id_rsa.pub` 文件中)添加到 `authorized_keys` 文件中,每行一个公钥。
1.4 克隆仓库
使用以下命令克隆仓库到本地:
git clone git@192.168.17.11:/home/gitrepo/myproject.git
192.168.17.11 为 Git 所在服务器 ip ,你需要将其修改为你自己的 Git 服务 ip。
二、 使用 GitLab 搭建 Git 服务器
2.1 安装 GitLab
在 Ubuntu 上安装 GitLab:
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="http://yourdomain" apt-get install gitlab-ee
在 CentOS 上安装 GitLab:
sudo EXTERNAL_URL=101.132.XX.XX yum install -y gitlab-ee
2.2 配置 GitLab
安装完成后,打开浏览器访问 `http://yourdomain`,设置管理员账户。当出现类似如下回显信息,表示 GitLab 已经安装成功。
2.3 创建项目
登录 GitLab
获取登录密码:
sudo cat /etc/gitlab/initial_root_password
结果如下所示:
用用户名"root"登录
创建一个新的项目:
1. 点击 "Create a project"。
2. 设置项目名称和 URL。
3. 点击 "Create project"。
2.4 生成 SSH 密钥
生成 SSH 密钥对:
ssh-keygen
查看并复制公钥:
cat .ssh/id_rsa.pub
2.5 添加 SSH Key
在 GitLab 项目页面中,点击 "Add SSH key"
将公钥文件 id_rsa.pub 中的内容粘贴到 Key 所在的文本框中
然后点击 "Add key"完成后,如下所示
复制 Clone 链接,在进行克隆操作时需要使用
三、 使用 GitLab 管理项目
3.1 配置用户信息
配置 Git 用户信息:
git config --global user.name "testname"
git config --global user.email "abc@example.com"
3.2 克隆项目到本地
克隆项目到本地:
git clone git@101.132.XX.XX:root/mywork.git
3.3 上传文件到 GitLab
进入项目目录并上传文件:
cd mywork/
echo "test" > test.sh
git add test.sh
git commit -m "Add test.sh"
git push -u origin main
在网页中查看上传的 test.sh 文件已经同步到 GitLab 服务器中