代码管理系统(版本控制)简介与部署 | 知识点大全
无论你是独立开发者还是团队成员,版本控制都是你必不可少的工具。本文带你从零理解版本控制,掌握 Git / GitLab 的部署与使用,构建你自己的代码管理平台。
一、版本控制概述
1.1 什么是版本控制?
版本控制是一种记录文件内容变化(尤其是源代码)的系统,便于日后查阅、恢复或合并历史版本。它解决了以下问题:
-
多人协作时代码冲突
-
代码回滚困难
-
无法追踪修改责任
-
代码备份与恢复复杂
1.2 版本控制的核心功能
| 功能 | 说明 |
|---|---|
| 历史记录 | 谁、何时、改了什么 |
| 并行开发 | 支持多分支独立开发 |
| 变更追踪 | 支持差异对比与合并 |
| 回滚能力 | 随时回到任意历史版本 |
| 权限控制 | 控制谁可以读/写/合并代码 |
二、版本控制的三种类型
2.1 本地版本控制(Local VCS)
-
原理:本地数据库记录文件差异
-
示例:RCS
-
❌ 缺点:无法多人协作
2.2 集中式版本控制(CVCS)
-
原理:中央服务器存储所有版本,客户端从服务器拉取
-
示例:SVN、CVS、Perforce
-
✅ 优点:权限统一、管理方便
-
❌ 缺点:单点故障、服务器宕机无法提交
2.3 分布式版本控制(DVCS)
-
原理:每个客户端都有完整的代码仓库镜像
-
示例:Git、Mercurial
-
✅ 优点:
-
无单点故障
-
支持离线提交
-
分支管理灵活
-
三、常见版本控制系统对比
| 系统 | 类型 | 是否分布式 | 典型应用场景 |
|---|---|---|---|
| Git | DVCS | 是 | 开源项目、企业开发 |
| GitHub | 托管平台 | 是 | 开源托管、协作 |
| GitLab | 自托管平台 | 是 | 企业内部代码管理 |
| SVN | CVCS | 否 | 传统企业、简单项目 |
| Mercurial | DVCS | 是 | 大型项目、性能要求高 |
四、Git 工作原理(重点)
4.1 Git 的三个核心区域
| 区域 | 说明 |
|---|---|
| 工作区 | 你正在编辑的文件目录 |
| 暂存区 | git add 后的临时存储区域 |
| 本地仓库 | git commit 后永久存储的版本库 |
4.2 Git 对象模型
-
Blob:文件内容
-
Tree:目录结构
-
Commit:快照 + 元信息(作者、时间、父提交)
4.3 核心操作流程
bash
git add . # 工作区 → 暂存区 git commit -m "msg" # 暂存区 → 本地仓库 git push # 本地 → 远程仓库 git pull # 远程 → 工作区
4.4 补充知识点(原创扩展)
🔹 Git 的 SHA-1 校验和
每次提交都会生成一个 40 位的 SHA-1 哈希值,作为唯一标识。哪怕只改一个字符,哈希值也会完全不同。
🔹 Git 的三种合并策略
-
Fast-forward:直接移动指针 -
Recursive:多分支合并 -
Ours / Theirs:冲突时选择保留哪一方
🔹 Git 钩子(Hooks)
在特定动作(如 commit、push)前后自动执行脚本,可用于代码格式化、测试、邮件通知等。
五、Git 服务器部署(从零搭建)
5.1 环境准备(openEuler / CentOS)
| 主机名 | IP | 角色 |
|---|---|---|
| git | 192.168.207.137 | 服务端 |
| client | 192.168.207.138 | 客户端 |
5.2 基础环境配置
bash
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭 SELinux setenforce 0 sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 时间同步 timedatectl set-timezone Asia/Shanghai chronyc sources -v # 修改主机名 hostnamectl set-hostname git
5.3 安装 Git
bash
dnf install -y git
5.4 初始化远程仓库(服务端)
bash
mkdir /opt/linuxprobe.git cd /opt/linuxprobe.git git --bare init
--bare表示裸仓库,无工作目录,仅用于远程推送。
5.5 客户端配置与克隆
bash
# 安装 Git dnf install -y git # 生成 SSH 密钥 ssh-keygen ssh-copy-id root@192.168.207.137 # 克隆仓库 git clone root@192.168.207.137:/opt/linuxprobe.git
5.6 客户端用户信息配置
bash
cd linuxprobe git config --global user.name "Zhang San" git config --global user.email "zhangsan@example.com" git config --global core.editor vim
5.7 代码提交全流程
bash
echo "Hello World" > readme.txt git add readme.txt git commit -m "first commit" git tag v1.1 -m "version 1.1" git push origin master git push origin v1.1
六、GitLab 部署(企业级 Web 管理)
6.1 安装 GitLab
bash
# 添加清华源 cat > /etc/yum.repos.d/gitlab-ce.repo <<EOF [gitlab-ce] name=gitlab-ce baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el9 enabled=1 gpgcheck=0 EOF # 安装 dnf install -y policycoreutils-python-utils gitlab-ce-17.8.2
6.2 配置与启动
bash
# 修改 external_url vi /etc/gitlab/gitlab.rb external_url 'http://192.168.207.137' # 重新配置 gitlab-ctl reconfigure
6.3 登录与密码修改
-
默认账号:
root -
初始密码:
cat /etc/gitlab/initial_root_password -
登录后修改密码(至少 8 位)
6.4 创建项目与克隆
bash
git clone http://192.168.207.137/root/kgc-demo.git cd kgc-demo echo "test web" > index.html git add . git commit -m "init" git push origin main
6.5 用户与组管理(原创补充)
🔹 GitLab 权限层级
| 权限 | 能力简述 |
|---|---|
| Guest | 仅读写 issue,不能看代码 |
| Reporter | 可克隆代码,不能提交 |
| Developer | 可 push、创建分支 |
| Maintainer | 管理分支、成员、项目设置 |
| Owner | 删除项目、管理组 |
🔹 用户加入组流程
-
创建组(Group)
-
创建用户(User)
-
将用户加入组并分配角色
-
用户首次登录需重置密码
七、分支管理(重点)
7.1 分支的本质
-
分支是指向某个提交对象的可变指针
-
HEAD指向当前分支 -
默认主分支为
master或main
7.2 常用分支命令
bash
# 查看分支 git branch # 创建分支 git branch dev # 切换分支 git checkout dev # 创建并切换 git checkout -b dev # 合并分支 git checkout main git merge dev # 删除本地分支 git branch -d dev # 删除远程分支 git push origin --delete dev
7.3 分支合并冲突模拟与解决(原创补充)
bash
# 模拟冲突 git checkout -b feature echo "feature" > README git add . git commit -m "feature change" git checkout main echo "main" > README git add . git commit -m "main change" # 合并冲突 git merge feature
手动编辑 README,保留所需内容后:
bash
git add . git commit -m "resolve conflict"
八、常用命令速查表(完整版)
| 命令 | 说明 |
|---|---|
git init |
初始化本地仓库 |
git clone <url> |
克隆远程仓库 |
git status |
查看状态 |
git add <file> |
添加到暂存区 |
git commit -m "msg" |
提交到本地仓库 |
git push |
推送到远程 |
git pull |
拉取并合并 |
git fetch |
只拉取不合并 |
git log |
查看提交历史 |
git diff |
查看差异 |
git tag |
打标签 |
git branch |
查看分支 |
git merge |
合并分支 |
git checkout |
切换分支/文件 |
git reset |
回退版本 |
git revert |
撤销提交 |
git stash |
暂存未提交的修改 |
git remote -v |
查看远程仓库 |
九、总结与建议
| 场景 | 推荐工具 |
|---|---|
| 个人学习、小项目 | Git + GitHub |
| 企业内部、私有代码 | GitLab(自托管) |
| 传统企业、不熟悉 Git | SVN |
| 大型开源项目 | Git + Gerrit |
✅ 无论你选择哪个工具,掌握 Git 是现代开发者的基本功。
十、写在最后
版本控制不仅仅是代码的“存档工具”,它是团队协作的基石,是项目演进的地图。希望通过这篇“知识点大全”,你不仅能学会 Git 和 GitLab 的部署与使用,更能理解版本控制的哲学。
如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、转发,也欢迎在评论区交流你的使用经验或踩坑记录!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)