一、核心概念
1.版本控制概念
版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本内容情况的系统。
- 记录文件的所有历史变化
- 随时可恢复到任何一个历史状态
- 多人协作开发
2.版本控制类型
**SVN:**集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件。开发者需要时刻与服务器保持连接。
**git:**分布式的版本控制系统,每个开发者都拥有完整的代码仓库副本,可以在本地进行版本控制和管理。开发者可以独立工作,不依赖于网络连接。
3.两种类型对比
Git | SVN | |
---|---|---|
共同点 | 存放代码,版本控制 | 存放代码,版本控制 |
工作模式 | 分布式版本控制系统 | 中心化(权限集中) |
使用 | 入门较难,熟练后容易使用,目前使用率高 | 入门比较简单,服务端linux,客户端windows |
分支 | 创建和维护分支方便 | 创建和维护分支繁琐 |
4.git架构解析

- 工作区(Working Directory):是开发者用于编辑和修改代码的本地目录,其中包含了当前的代码文件。
- 暂存区(Staging Area):也称为索引(Index),是一个中间区域,用于将工作区中的变更提交到版本库之前进行准备。开发者可以选择性地将某些文件或修改添加到暂存区。
- 本地仓库(LocalRepo):是存储代码和历史版本的地方,本地版本库位于开发者的本地计算机上,属于个人开发者应用。
- 远程仓库( RemoteRepo**)**:是存储代码和历史版本的地方。远程版本库通常位于中央服务器上,属于团队共享。
二、git部署及使用
1.部署
bash
yum -y install git
2.必掌握git的8个核心命令
命令 | 作用 | DevOps 场景应用 |
---|---|---|
git init |
初始化仓库 | 新项目初始化 |
git clone <url> |
克隆远程仓库 | 获取CI/CD流水线代码 |
git add -A |
添加所有变更 | 准备提交构建产物 |
git commit -m "msg" |
提交变更 | 附带Jira任务ID |
git push origin main |
推送到远程 | 触发CI/CD流水线 |
git pull --rebase |
拉取并变基 | 避免合并污染历史 |
git log --oneline --graph |
查看历史 | 排查部署问题 |
git restore <file> |
撤销修改 | 快速回退错误更改 |
3.git初始化配置
bash
#配置git用户
git config
git config --global user.name 'liux'
git config --global user.email '1573374330@qq.com'
git config --global color.ui true
git config --global --list
#初始化代码目录
mkdir -p /app/src/liux-app
cd /app/src/liux-app
git init
ll .git/
#书写案例代码,添加文件
echo liux-app >index.html
#查看仓库状态
git status
#进行提交
git add .
#提交到本地仓库 -m 添加注释
git commit -m '项目完成60%'
#查看提交日志
git reflog
如下图所示,git初始化配置已完成
4.git基础命令
bash
git init 初始化本地仓库目录
git status 显示工作空间的状态
git add file 提交数据到缓冲区(暂存区) git add .提交所有文件
git commit 把暂存区的数据提交到本地仓库 git commit -m "标记/说明"
git rm --cached 删除暂存区的文件
git checkout -- test.txt 将暂存区的内容覆盖到工作目录
git reset --hard 版本号 代码回滚到指定历史版本
git checkout 文件下载到工作空间并可以使用 git checkout .
git HEAD 显示当前所出于哪个分支,指代当前分支的最新提交的commit id
git rm file 删除文件
git diff 比对工作目录和暂存区的不同
git diff 比对的是暂存区和本地仓库的不同
git reflog 查看所有提交的历史版本信息
git log --oneline # 一行简单的显示commit信息
git log --oneline --decorate # 显示当前的指针指向哪里
5.git分支branch
5.1 分支简介
Git 分支(Branch) 是 Git 的核心功能之一,允许开发者在同一个代码库中创建独立的分支线,用于并行开发新功能、修复问题或隔离实验性代码,而不会影响主分支(如 main
/master
)。每个分支相当于一个独立的快照,开发者可以自由切换、合并或删除分支,最终通过 merge
或 rebase
将变更集成到主分支。分支的轻量级设计使得团队协作高效且灵活,是多人协作和版本控制的关键工具。
5.2 分支基本命令
命令 | 说明 |
---|---|
git branch | 查看分支 |
git branch name | 创建分支 |
git branch -d name | 删除分支 |
git checkout 分支名称 | 切换分支 |
git merge 分支名字 | 合并(吸收)分支(把指定的分支合并到当前分支中) |
git checkout -b name | 创建分支并切换到这个分支 |
5.3 分支基本使用
bash
#查看分支
git branch
#创建分支
git branch shopping
#切换分支
git checkout shopping
#切换带shopping分支后写代码
echo 'hello liux' > hello.txt
#把 shopping分支合并到master分支中,先切换到master 然后执行merge.
git checkout master
git merge shopping
如下图所示:

6.git连接公有仓库
6.1 仓库类型
-
公共仓库:gitee.com/github.com
-
私有仓库:gitlab,gogs
6.2 创建仓库

6.3 上传代码到gitee仓库
- 用户名/密码方式连接仓库
bash
#添加远程仓库(用户名密码方式)
cd /app/liux-app
git remote add origin https://gitee.com/liuxing88/liux-app.git
#查看远程仓库
git remote -v
#上传本地仓库的内容 到远程仓库
git push -u origin "master"
如下图所示,已经讲本地代码上传到gitee仓库了
- 密钥认证连接远程仓库
bash
#先在本地生成密钥对,将公钥拷贝到远程仓库中
ssh-keygen
ll ~/.ssh/id_rsa*
#然后拷贝公钥到gitee中,具体流程在下图
git remote rename origin origin-bak
git remote -v
git remote add origin git@gitee.com:liuxing88/liux-app.git
#测试
echo 'hello liux' > liux.html
git add .
git commit -m "liux"
git push origin master
如下图所示,已经通过ssh方式成功推送到gitee仓库了。

7.git tag标签
- tag标签:给commit id设置别名,方便我们快速查看与使用
bash
#git tag -a "版本号" -m "描述" 基于当前最新的COMMITID
git tag -a "v1.0" -m "v1.0"
#上传标签
git push origin --tags
8.gitignore文件
- 上传代码的时候,代码中可能包含临时文件cache .swp 排除
- 在代码根目录中创建文件.gitignore 写上要排除的内容
bash
[root@devops-gitlab liux-app]# vim .gitignore
*.tmp
*.swp
cache/*
9.项目分支管理
- 主干分支 master: 主要负责管理正在运行的生产环境代码 。永远保持与正在运行的生 产环境完全一致 。
- 开发分支 develop: 主要负责管理正在开发过程中的代码 。一般情况下应该是最新的 代码。
- bug 修理分支 hotfix: 要负责管理生产环境下出现的紧急修复的代码 。 从主干分支分 出, 修理完毕并测试上线后, 并回主干分支 。并回后, 视情况可以删除该分支 。
- 发布版本分支 release: 较大的版本上线前, 会从开发分支中分出发布版本分支, 进行 最后阶段的集成测试 。该版本上线后, 会合并到主干分支 。生产环境运行一段阶段较 稳定后可以视情况删除 。
- 功能分支 feature: 为了不影响较短周期的开发工作, 一般把中长期开发模块, 会从开 发分支中独立出来 。 开发完成后会合并到开发分支 。
本章节详细介绍了 Git 版本控制的原理和操作,下一章节将深入讲解 GitLab ------ 企业级代码托管与协作平台的核心使用技巧。