GitLab在Linux中的版本控制操作指南
GitLab的安装需根据Linux发行版选择对应方式,常见为官方包安装(Debian/Ubuntu/CentOS)或Docker安装。
# 添加GitLab官方仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# 安装GitLab CE(社区版)
sudo EXTERNAL_URL="http://your-server-ip" apt-get install gitlab-ce
# 添加GitLab官方仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 安装GitLab CE
sudo EXTERNAL_URL="http://your-server-ip" yum install gitlab-ce
# 拉取GitLab镜像
docker pull gitlab/gitlab-ce:latest
# 运行GitLab容器(映射端口、挂载数据卷)
docker run --detach \
--hostname your-server-ip \
--publish 80:80 --publish 443:443 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
安装完成后,通过以下命令启动服务并配置:
# 重新配置GitLab(应用设置)
sudo gitlab-ctl reconfigure
# 重启GitLab服务
sudo gitlab-ctl restart
访问http://your-server-ip,使用默认管理员账号(root)登录,完成初始设置(如设置密码、配置域名)。
登录GitLab Web界面,点击右上角New project,填写项目名称(如my-project)、描述,选择可见性级别(Private/Internal/Public),点击Create project即可生成项目仓库。
在项目页面点击Clone,复制HTTPS或SSH链接(如http://your-server-ip/username/my-project.git),在本地Linux终端执行:
# 克隆项目到当前目录
git clone http://your-server-ip/username/my-project.git
# 进入项目目录
cd my-project
此操作会将远程仓库同步到本地,后续可在本地进行开发。
git status
显示工作区、暂存区的文件变更状态(如新增、修改、删除)。
# 添加单个文件
git add filename.txt
# 添加所有变更文件
git add .
将本地修改的文件添加到暂存区,准备提交。
git commit -m "Initial commit: Add README file"
将暂存区的变更保存到本地仓库,需填写清晰的提交信息(描述本次变更内容)。
git push origin master
将本地master分支的提交推送到远程仓库(origin为远程仓库别名,默认克隆时生成)。
git pull origin master
从远程仓库获取最新的提交,合并到本地master分支,避免本地与远程代码冲突。
分支是版本控制的核心功能,用于隔离开发任务。
git branch new-feature
创建名为new-feature的新分支(基于当前所在分支,如master)。
git checkout new-feature
切换到new-feature分支,后续操作将在该分支上进行。
# 切换到主分支(如master)
git checkout master
# 合并new-feature分支到master
git merge new-feature
# 推送合并后的主分支到远程仓库
git push origin master
将new-feature分支的变更合并到master,完成开发任务的整合。
git log
显示项目的提交记录(包括提交哈希、作者、时间、提交信息),可按Enter键滚动查看,按q键退出。
git diff
显示工作区与暂存区的文件差异(未git add的变更);
git diff --staged
显示暂存区与本地仓库的文件差异(已git add但未git commit的变更)。
当合并分支时,若同一文件的同一区域被不同分支修改,会引发冲突。Git会标记冲突文件,需手动解决:
打开冲突文件,找到类似以下标记:
<<<<<<< HEAD
当前分支的内容
=======
目标分支的内容
>>>>>>> new-feature
删除标记,保留需要的内容(或合并两者)。
git add conflicted_file.txt
将解决后的文件添加到暂存区,告知Git冲突已处理。
git commit -m "Resolve merge conflict in conflicted_file"
提交合并结果,完成冲突解决。
为防止误操作破坏主分支(如master),需设置分支保护规则:
master),勾选:
GitLab支持持续集成/持续部署(CI/CD),通过项目根目录下的.gitlab-ci.yml文件定义自动化流程(如代码测试、构建、部署)。
在项目根目录创建.gitlab-ci.yml文件:
stages:
- test
- deploy
test_job:
stage: test
script:
- echo "Running tests..."
- pytest # 假设使用pytest进行测试
deploy_job:
stage: deploy
script:
- echo "Deploying to production..."
- scp -r . user@server:/var/www/html # 示例:将代码部署到服务器
only:
- master # 仅在master分支推送时触发
将.gitlab-ci.yml文件提交到远程仓库并推送:
git add .gitlab-ci.yml
git commit -m "Add CI/CD configuration"
git push origin master
GitLab会自动检测配置文件,按照定义的流程执行任务(如运行测试、部署代码)。
sudo gitlab-backup create命令手动备份,或配置自动备份);