GitLab 是一个基于 Git 的开源仓库管理系统,使用 Git 作为代码管理工具,并在此基础上搭建起来的 Web 服务。GitLab分为社区版(GitLab CE)和企业版(GitLab EE),其中社区版是免费的。
虚拟机建议 cpu 分配 2核 以上,内存 4G 以上

一、环境准备

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 查看防火墙状态
firewall-cmd --state

二、使用 docker 部署

1、安装 docker
# 添加阿里云docker-ce仓库
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 列出当前系统中所有可安装的 docker-ce 版本,并按照版本号从高到低进行排序,同时显示重复的版本。
dnf list docker-ce --showduplicates | sort -r
# 安装最新版本 docker-ce,也可以指定版本安装(dnf install -y docker-ce-3:28.1.1-1.el9)
dnf install -y docker-ce
# 启用Docker Cgroup用于限制进程的资源使用量,如CPU、内存资源
# 创建目录,存放 docker 的配置文件
mkdir -p /etc/docker
# 创建并写入 /etc/docker/daemon.json 文件,设置 Docker 使用 systemd 作为 Cgroup 驱动
# registry-mirrors 配置:docker 镜像加速器的地址列表。
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}
EOF
# 设置 docker 开机自启
systemctl enable docker
# 启动 docker
systemctl start docker
# 查看 docker 状态
systemctl status docker
2、下载 gitlab 社区版
docker pull gitlab/gitlab-ce:latest
3、安装 gitlab

方式 1: 使用 Docker 直接运行 GitLab CE

# hostname 替换为虚拟机 ip
docker run -d \
  --name gitlab \
  --hostname 192.168.0.28 \
  --restart unless-stopped \
  -e GITLAB_OMNIBUS_CONFIG="
    external_url 'http://192.168.0.28';
    gitlab_rails['gitlab_shell_ssh_port'] = 2222;
  " \
  -p 80:80 \
  -p 443:443 \
  -p 2222:22 \
  -v /srv/gitlab/config:/etc/gitlab \
  -v /srv/gitlab/logs:/var/log/gitlab \
  -v /srv/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

方式 2:使用 Docker Compose 安装(推荐)

root 目录下创建 gitlab_deploy.yaml 文件,内容如下:
version: '3.6'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: 'gitlab'
    restart: unless-stopped
    hostname: '192.168.0.28' # hostname 替换为虚拟机 ip
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.28' # 替换为虚拟机 ip
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
    ports:
      - '80:80'
      - '443:443'
      - '2222:22'
    volumes:
      - '/srv/gitlab/config:/etc/gitlab'
      - '/srv/gitlab/logs:/var/log/gitlab'
      - '/srv/gitlab/data:/var/opt/gitlab'
# 启动 gitlab 服务
docker compose -f gitlab_deploy.yaml up -d

# 等待几分钟让 gitLab 完全启动(首次启动可能需要较长时间)
# 可以通过 docker ps 查看 gitlab 是否完全启动,如下所示,STATUS 为 healthy 后说明成功启动,如果是 starting 说明还在启动中

[root@gitlab ~]# docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS                   PORTS                                                                                                                   NAMES
b4364289a9c2   gitlab/gitlab-ce:latest   "/assets/init-contai…"   4 minutes ago   Up 4 minutes (healthy)   0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:2222->22/tcp, [::]:2222->22/tcp   gitlab

# 访问 http://192.168.0.28
# 用户名 root 
# 用户密码在 /srv/gitlab/config/initial_root_password 文件中
# 使用命令 cat /srv/gitlab/config/initial_root_password 查看登录密码
# 里面的Password: 后面的值就是 root 默认的登录密码
# 登录 gitlab 后,先重置密码

三、常用 git 命令

1、初始化与克隆
# 在本地创建新仓库
git init

# 克隆远程 Git 仓库到本地
git clone http://gitlab.example.com/group/project.git
2、提交代码
# 添加文件到暂存区
git add filename.txt        # 添加单个文件
git add .                   # 添加所有修改文件

# 提交暂存区到本地仓库
git commit -m "提交说明"

# 推送本地分支到远程仓库(即与之关联的远程分支)
git push
# 推送到 main 分支
git push origin main
3、拉取更新
# 拉取远程更新并合并
git pull origin main

# 仅拉取不自动合并
git fetch origin
4、分支管理
# 创建新分支但不切换
git branch feature

# 创建并切换到新分支
git checkout -b feature

# 切换回主分支
git checkout main

# 合并指定分支到当前分支
git merge feature

# 删除本地分支
git branch -d feature

# 删除远程分支
git push origin --delete feature
5、标签管理
# 创建轻量标签
git tag v1.0

# 创建带注释的标签
git tag -a v1.0 -m "版本1.0发布"

# 推送标签到远程
git push origin v1.0

# 查看所有标签
git tag
6、撤销与回滚
# 撤销工作区修改
git checkout -- filename.txt

# 撤销暂存区的文件
git reset HEAD filename.txt

# 回退到指定提交
git reset --hard commit_id
7、查看状态与日志
# 查看工作区状态,包括哪些文件被修改、添加或删除:
git status

# 查看提交历史
git log                   # 标准日志
git log --oneline         # 简化日志
git log --graph           # 带分支图的日志

# 查看工作区与暂存区的差异
git diff

# 查看暂存区与本地仓库的差异
git diff --staged

# 查看两次提交之间的差异
git diff commit1 commit2
8、其它常用
# 配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐