本项目模拟项目实战,根据项目引入对Git的学习以及部分IT常识
一、HIS项目介绍
1.1 项目概述
HIS 英文全称 Hospital Information System ,中文全称 医院信息系统。
系统主要功能按照数据流量、流向及处理过程分为:
- 临床诊疗
- 药品管理
- 财务管理
- 患者管理
1.2 业务说明
诊疗活动由各工作站配合完成,并将临床信息进行整理、处理、汇总、统计、分析等。
本系统包括以下工作站:
- 门诊医生工作站
- 药房医生工作站
- 医技医生工作站
- 收费员工作站
- 对帐员工作站
- 管理员工工作站
技术栈 :基于 SpringBoot 2.x 和 VUE 实现
1.3 HIS业务流程与项目架构解析
HIS业务流程图

HIS项目架构图

1.4 组件解析
前端组件
- VUE:用于用户界面构建的JavaScript框架
后端组件
- SpringBoot:新一代JavaEE标准,开箱即用
服务支撑
| 服务组件 | 功能说明 |
|---|---|
| RabbitMQ | 消息队列服务,请求异步处理 |
| MySQL | 关系型数据库服务,数据持久化存储 |
| Redis | 缓存数据库服务,加速系统响应 |
| Elasticsearch | 搜索引擎服务,加速海量搜索 |
| OSS | 对象存储服务,海量静态资源存储 |
| Nginx | WEB服务,承接客户端请求,请求分离 |
1.5 HIS项目代码解析
项目源码地址 :https://gitee.com/robin_home/HIS.git
项目整理后代码结构:
| 目录/文件 | 说明 |
|---|---|
| HIS-BACKEND | 后端源码,采用SpringBoot框架 |
| HIS-CONFIG | 配置文件模板 |
| HIS-FONTEND | 前端代码 |
| HIS-FONTEND-DEPENDENCY | 前端源码编译需要的依赖包 |
| HIS-FONTEND-SOURCECODE | 前端源码,采用VUE框架 |
| HIS-SQL | HIS项目数据库SQL文件 |
二、项目环境准备
2.1 环境准备要求
- 最小化安装即可
- 配置好主机名和IP地址
- 关闭防火墙和SELinux
- 搭建好yum
2.2 项目主机列表
| 主机名 | IP地址 | 规格 | 角色应用 |
|---|---|---|---|
| Programer | 192.168.88.10/24 | 1vCPUs+1GiB+20G | 程序员主机,Git |
| GitLab | 192.168.88.20/24 | 2vCPUs+4GiB+20G | 代码托管平台GitLab |
| Jenkins | 192.168.88.30/24 | 2vCPUs+2GiB+20G | 持续集成工具Jenkins |
| Services | 192.168.88.50/24 | 2vCPUs+4GiB+20G | 应用服务器(RabbitMQ、MySQL、Elasticsearch、Redis) |
| Backend | 192.168.88.60/24 | 2vCPUs+2GiB+20G | 后端服务器(JDK环境、JAR包) |
| Fontend | 192.168.88.70/24 | 1vCPUs+1GiB+20G | 前端服务器(Nginx) |
项目准备
- 准备项目实战使用机器共6台
- 注意按照表格参数配置机器规格
- 配置好主机名和IP地址
- 配置好每台主机yum源
- 关闭防火墙和SELinux
三、开发体系概述
3.1 前端开发
前端是互联网行业术语,主要是创建web或者app的前端页面,结果是呈现给用户的内容。
开发者通过前端语言,开发出各种前端框架和技术,从而实现各种产品用户页面的交互。

3.2 后端开发
后端开发就是让应用程序在服务器端呈现。
相比于前端,后端开发人员通常要掌握更多的技能,能够处理业务逻辑和访问其他资源,如数据库、文件服务。
后端是应用程序的支柱。

3.3 全栈开发
作为全栈开发人员,不能单一的做前端或后端,全栈人员可以同时兼顾前端后端开发。全栈开发更具备挑战性,涉及知识面更加完整。
3.4 框架概述
框架概念:框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。另一种定义认为,框架是可被应用开发者定制的应用骨架。
为什么使用框架:
- 随着业务的扩大,需求的提升,开发框架可以不断升级
- 具有功能强大、提高企业竞争力、降低开发成本、改善客户满意度、控制开发进度等优势特点
- 是企业专心研发自身业务,无需顾虑框架功能操作,从而提升团队开发效率的得力助手
常用框架:
| 前端框架 | Java框架 | Python框架 | PHP框架 |
|---|---|---|---|
| jQuery | Spring | Django | ThinkPHP |
| Vue | SpringMVC | Flask | KYPHP |
| React | SpringBoot | Tornado | SpeedPHP |
| Angular | SpringCloud | KPHP | --- |
| --- | Mybatis | --- | --- |
| --- | Swagger-UI | --- | --- |
四、版本控制
4.1 基本概念
版本控制 是管理修改 的艺术,指对软件开发过程中各种程序代码、配置文件及说明文档等文件的变更管理,是软件管理配置的核心思想之一。
版本控制的好处:
- 优雅的备份:本地和服务器均保存备份文件,当本地出现问题时可以通过服务器修复
- 多人并行开发:每个人通过创建属于自己的分支,不影响其他人操作
- 了解变化内容:提交版本信息时需要加上简单的备注信息,标记本次修改的内容
4.2 版本控制系统
版本控制系统 是一个记录文件内容变化以便将来查阅特定版本修订情况 的系统。不仅可以应用于软件源代码文件,而且可以对任意类型文件进行版本控制。
版本库 是版本控制系统的核心,是版本控制的核心。任意数量客户端通过写数据库分享代码,是典型的客户/服务器系统。
4.3 版本控制软件分类
| 类型 | 软件 |
|---|---|
| 集中式版本控制软件 | CVS、SVN (Subversion) |
| 分布式版本控制软件 | Git、BitKeeper (收费) |
集中式 与分布式的核心区别:
- 集中式(如SVN):所有版本数据存储在中央服务器,客户端从中央服务器获取或提交代码,依赖网络,存在单点故障风险。
- 分布式(如Git):每个客户端本地都有一个完整的版本库副本,可以在本地进行版本管理操作,即使没有网络也能工作,更加灵活可靠。
五、Git分布式版本控制
5.1 Git介绍
- 由 Linus Torvalds(Linux作者)编写
- 是一个开源 的分布式版本控制软件
- "the stupid content tracker",傻瓜内容跟踪器
- 可以有效、高速的处理从很小到非常大的项目版本控制
5.2 Git基础概念
| 概念 | 说明 |
|---|---|
| 工作区 (Workspace) | 存放从仓库中提取出来的文件的地方,放在磁盘上供你使用或修改 |
| 暂存区 (Index/Stage) | 就是一个索引文件,保存了下次将提交的文件列表信息 |
| 仓库 (Local Repository) | 保存所有数据的地方,这里边有提交的所有版本的数据 |
| 远程仓库 (Remote Repository) | 托管代码的地方,可供其他人浏览、下载代码的服务器 |
5.3 Git工作流

基本工作流程:
- 在工作区修改文件
- 使用
git add将修改添加到暂存区 - 使用
git commit将暂存区内容提交到本地仓库
5.4 Git常用子命令
| 子命令 | 功能说明 |
|---|---|
config |
修改git配置 |
init |
初始化本地仓库 |
add |
添加修改到暂存区 |
commit |
提交修改到本地仓库 |
status |
查看当前状态 |
clone |
将远程服务器的仓库克隆到本地 |
push |
提交修改到远程服务器 |
六、Git安装
6.1 环境检查与Yum配置
- Programer主机安装Git
bash
# 查看当前系统语言及编码
[root@Programer ~]# echo $LANG
en_US.UTF-8
# 安装中文支持(选做)
[root@Programer ~]# dnf -y install langpacks-zh_CN.noarch
# 配置系统使用中文及编码
[root@Programer ~]# vim /etc/locale.conf
[root@Programer ~]# cat /etc/locale.conf
LANG="zh_CN.UTF-8"
# 重启使语言配置生效
[root@Programer ~]# reboot
# 确认使用中文编码
[root@Programer ~]# echo $LANG
zh_CN.UTF-8
# 验证yum源是否可用
[root@Programer ~]# yum clean all
[root@Programer ~]# yum repolist -v
...
Total packages: 8,265
6.2 安装Git
bash
# yum源中集成了Git软件包,使用yum安装Git
[root@Programer ~]# yum -y install git
...
Complete!
# 查看Git版本
[root@Programer ~]# git --version
git version 2.31.1
# 查看Git命令帮助信息
[root@Programer ~]# git --help
七、案例3:Git版本库操作

7.1 Git基础配置
Git在使用前需要做一些基础配置,配置分为三个级别:
--local:仓库级(仓库目录下.git/config)--global:全局级(~/.gitconfig)--system:系统级(/etc/gitconfig)
bash
# 设置用户名。此用户名不校验,但是一般企业内都有统一的规范
[root@Programer ~]# git config --global user.name mark
# 设置用户邮箱
[root@Programer ~]# git config --global user.email mark@test.com
# 设置版本库默认分支,以后执行 git init 新建仓库时,默认创建的第一个分支名字叫 master
[root@Programer ~]# git config --global init.defaultBranch master
# 查看已有Git配置
[root@Programer ~]# git config --list
user.name=mark
user.email=mark@test.com
init.defaultbranch=master
# 查看Git配置持久化文件
[root@Programer ~]# cat ~/.gitconfig
[user]
name = mark
email = mark@test.com
[init]
defaultBranch = master
7.2 Git初始化空版本库
bash
# 使用Git命令初始化空版本库
[root@Programer ~]# ls
[root@Programer ~]# git init myproject #初始化空版本库
已初始化空的 Git 仓库于 /root/myproject/.git/
# 确认版本库已创建
[root@Programer ~]# ls
myproject
# 查看版本库目录结构
[root@Programer ~]# ls -a myproject/
. .. .git
[root@Programer ~]# ls -a myproject/.git/
. .. branches config description HEAD hooks info objects refs
7.3 将已有目录制作成版本库
bash
# 创建空目录
[root@Programer ~]# mkdir mytest
[root@Programer ~]# ls -a mytest/
. ..
# 进入目录
[root@Programer ~]# cd mytest/
# 将已有目录制作成Git版本库
[root@Programer mytest]# git init
已初始化空的 Git 仓库于 /root/mytest/.git/
# 确认.git目录已生成
[root@Programer mytest]# ls -a
. .. .git
[root@Programer mytest]# ls -a .git/
. .. branches config description HEAD hooks info objects refs
[root@Programer mytest]# cd
7.4 Git版本库操作
7.4.1 基本操作流程
bash
# 进入项目目录
[root@Programer ~]# cd myproject/
# 查看Git本地仓库状态
[root@Programer myproject]# git status
位于分支 master
尚无提交
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)
# 创建readme文件
[root@Programer myproject]# echo "Learning Git" >> readme.md
# 再次查看状态
[root@Programer myproject]# git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
readme.md
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
# 将文件信息添加到暂存区
[root@Programer myproject]# git add readme.md
# 查看暂存区状态
[root@Programer myproject]# git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: readme.md
# 将暂存区文件提交到本地仓库
[root@Programer myproject]# git commit -m "add readme"
[master(根提交) 09d8603] add readme
1 file changed, 1 insertion(+)
create mode 100644 readme.md
# 确认工作区干净
[root@Programer myproject]# git status
位于分支 master
无文件要提交,干净的工作区
7.4.2 生成多个版本
bash
# 创建test.txt文件
[root@Programer myproject]# echo 123 > test.txt
# 添加到暂存区
[root@Programer myproject]# git add test.txt
# 生成新版本
[root@Programer myproject]# git commit -m "add test.txt"
[master 27466f7] add test.txt
1 file changed, 1 insertion(+)
create mode 100644 test.txt
# 修改test.txt文件
[root@Programer myproject]# echo 456 > test.txt
# 添加修改到暂存区
[root@Programer myproject]# git add .
# 生成新版本
[root@Programer myproject]# git commit -m "modify test.txt"
[master 58cdf79] modify test.txt
1 file changed, 1 insertion(+), 1 deletion(-)
# 再次修改test.txt文件
[root@Programer myproject]# echo 789 > test.txt
# 添加修改到暂存区
[root@Programer myproject]# git add ./
# 生成新版本
[root@Programer myproject]# git commit -m "done test.txt"
[master 0f44bf0] done test.txt
1 file changed, 1 insertion(+), 1 deletion(-)
7.5 Git版本库查询
bash
# 查看本地版本库提交记录(详细)
[root@Programer myproject]# git log
commit 09d8603547b7f7c6cf5b2850dd241d4b8b799b74 (HEAD -> master)
Author: mark <mark@test.com>
Date: Wed Feb 22 15:00:46 2026 +0800
add readme
# 查看本地版本库提交记录(简略)
[root@Programer myproject]# git log --pretty=oneline
0f44bf04834eac643a0d56901039cec73128d3cc (HEAD -> master) done test.txt
58cdf7905a95a956fc65da264aab827fc7290dbf modify test.txt
27466f79df8e0cbfd3f8f2349143e054db8ac693 add test.txt
09d8603547b7f7c6cf5b2850dd241d4b8b799b74 add readme
# 查看本地版本库提交记录(极简)
[root@Programer myproject]# git log --oneline
0f44bf0 (HEAD -> master) done test.txt
58cdf79 modify test.txt
27466f7 add test.txt
09d8603 add readme
#这里的每一行都是一个版本
补充知识:commit哈希值的计算
Git的commit哈希值(如 0f44bf04834eac643a0d56901039cec73128d3cc)是通过SHA-1算法对以下信息计算生成的40位十六进制数:
- 文件内容的快照
- 父commit的哈希值
- 作者信息(姓名、邮箱、时间)
- 提交者信息
- 提交信息(commit message)
- 树对象的哈希值
这使得每次commit的哈希值都是唯一且不可篡改的,任何信息的微小变化都会导致哈希值完全不同,保证了版本历史的完整性和可验证性。
八、案例4:Git指针操作
8.1 HEAD指针概念
- HEAD指针是一个可以在任何分支和版本移动的指针
- 通过移动指针我们可以将数据还原至任何版本
8.2 查看Git指针信息
bash
# 进入项目目录
[root@Programer ~]# cd myproject/
# 查看Git指针(HEAD指针指向当前版本)
[root@Programer myproject]# git log --pretty=oneline
0f44bf04834eac643a0d56901039cec73128d3cc (HEAD -> master) done test.txt #HEAD -> master就是指针。
58cdf7905a95a956fc65da264aab827fc7290dbf modify test.txt
27466f79df8e0cbfd3f8f2349143e054db8ac693 add test.txt
09d8603547b7f7c6cf5b2850dd241d4b8b799b74 add readme
# 查看当前文件内容
[root@Programer myproject]# cat test.txt
789
root@Programer myproject# git log --pretty=oneline
0f44bf04834eac643a0d56901039cec73128d3cc (HEAD -> master) done test.txt
HEAD-> master就是指针。其中:
master(分支指针):它是一张"路标",明确指向当前这列火车的最后一节车厢(即最新的提交的项目33ef30c)。
HEAD(当前工作指针):它是一双"你的脚",明确指向你当前站在哪条路线上。现在它指向 master,说明你正在 master 这条路上干活。
8.3 利用指针实现Git版本还原
reset 意思是:"把当前分支的指针(比如 master)往后拽,退回到指定的历史版本去。"
--hard 意思是:"指针退回去之后,顺便把硬盘上的文件(工作区)和暂存区,也强行改成那个旧版本的样子,不要留任何新修改。"
bash
# reset子命令用于版本还原
# 还原到指定版本(使用commit id前几位即可)
[root@Programer myproject]# git reset --hard 58cdf7905a
HEAD 现在位于 58cdf79 modify test.txt
# 确认HEAD指针已移动
[root@Programer myproject]# git log --oneline
58cdf79 (HEAD -> master) modify test.txt
27466f7 add test.txt
09d8603 add readme
# 查看文件内容已回退
[root@Programer myproject]# cat test.txt
456
# reflog子命令用于获取HEAD指针移动轨迹
[root@Programer myproject]# git reflog
58cdf79 (HEAD -> master) HEAD@{0}: reset: moving to 58cdf79
0f44bf0 HEAD@{1}: commit: done test.txt
58cdf79 (HEAD -> master) HEAD@{2}: commit: modify test.txt
27466f7 HEAD@{3}: commit: add test.txt
09d8603 HEAD@{4}: commit (initial): add readme
# 使用reflog配合reset回到最新版本
[root@Programer myproject]# git reset --hard 0f44bf0
HEAD 现在位于 0f44bf0 done test.txt
# 确认回到最新版本
[root@Programer myproject]# git log --oneline
0f44bf0 (HEAD -> master) done test.txt
58cdf79 modify test.txt
27466f7 add test.txt
09d8603 add readme
# 查看文件内容已恢复
[root@Programer myproject]# cat test.txt
789
补充:
-
git reset --hard :HEAD 会跟着 master 自动移动。--hard 参数非常暴力,它不仅移动指针,还会强制覆盖你当前工作目录(文件内容)和暂存区
- (暴力强制覆盖):它不管三七二十一,直接强制覆盖工作区和暂存区。如果你有没保存的修改,它会直接丢弃,找不回来
-
git checkout:直接跳到历史版本,分离头指针(detached HEAD),master和HEAD分离
- (安全拦截覆盖):它也会改工作区,但它在动手前会先检查。如果 checkout 过去会覆盖你当前没提交的修改,Git 会直接报错阻止,除非你强制加 -f(git checkout -f),否则它绝不乱删你的劳动成果
8.4 reset 三种模式对比
| 模式 | 工作区 | 暂存区 | 仓库 | 说明 |
|---|---|---|---|---|
--soft |
不变 | 不变 | 移动HEAD | 仅移动HEAD指针,保留所有修改 |
--mixed(默认) |
不变 | 重置 | 移动HEAD | 撤销暂存区,保留工作区修改 |
--hard |
重置 | 重置 | 移动HEAD | 完全还原,丢弃所有修改(谨慎使用) |
九、案例5:Git分支操作
9.1 分支的基本概念
- 分支可以让开发分多条主线同时进行,每条主线互不影响
- 按功能模块分支、按版本分支
- 分支也可以合并

常见的分支规范:
| 分支名称 | 说明 |
|---|---|
| MASTER分支 | MASTER是主分支,是代码的核心 |
| DEVELOP分支 | DEVELOP最新开发成果的分支 |
| RELEASE分支 | 为发布新产品设置的分支 |
| HOTFIX分支 | 为了修复软件BUG缺陷的分支 |
| FEATURE分支 | 为开发新功能设置的分支 |
9.2 分支管理
9.2.1 查看当前分支
bash
# 查看本地Git仓库信息
[root@Programer myproject]# git status
位于分支 master
无文件要提交,干净的工作区
# 查看分支信息(-v显示最新提交)
[root@Programer myproject]# git branch -v
* master 0f44bf0 done test.txt
9.2.2 创建分支
bash
# 创建hotfix分支
[root@Programer myproject]# git branch hotfix
# 创建feature分支
[root@Programer myproject]# git branch feature
# 查看分支信息
[root@Programer myproject]# git branch -v
feature 0f44bf0 done test.txt
hotfix 0f44bf0 done test.txt
* master 0f44bf0 done test.txt
9.2.3 切换分支
bash
# 切换到hotfix分支
[root@Programer myproject]# git checkout hotfix
切换到分支 'hotfix'
# 查看分支信息(*标记当前分支)
[root@Programer myproject]# git branch -v
feature 0f44bf0 done test.txt
* hotfix 0f44bf0 done test.txt
master 0f44bf0 done test.txt
# 切换到feature分支
[root@Programer myproject]# git checkout feature
切换到分支 'feature'
[root@Programer myproject]# git branch -v
* feature 0f44bf0 done test.txt
hotfix 0f44bf0 done test.txt
master 0f44bf0 done test.txt
9.2.4 删除分支
bash
# 创建develop分支
[root@Programer myproject]# git branch develop
# 查看所有分支
[root@Programer myproject]# git branch -v
develop 0f44bf0 done test.txt
* feature 0f44bf0 done test.txt
hotfix 0f44bf0 done test.txt
master 0f44bf0 done test.txt
# 删除develop分支(-d安全删除,-D强制删除)
[root@Programer myproject]# git branch -d develop
已删除分支 develop(曾为 0f44bf0)。
9.3 Git分支合并
9.3.1 无冲突分支合并(git merge)
bash
# 切换到hotfix分支
[root@Programer myproject]# git checkout hotfix
切换到分支 'hotfix'
# 创建haha.txt文件
[root@Programer myproject]# echo haha > haha.txt
# 添加并提交
[root@Programer myproject]# git add ./
[root@Programer myproject]# git commit -m "add haha.txt"
[hotfix 108cf46] add haha.txt
1 file changed, 1 insertion(+)
create mode 100644 haha.txt
# 确认文件存在
[root@Programer myproject]# ls
haha.txt readme.md test.txt
# 切换到master分支
[root@Programer myproject]# git checkout master
切换到分支 'master'
# 在master分支创建xixi.txt
[root@Programer myproject]# echo xixi > xixi.txt
[root@Programer myproject]# git add ./
[root@Programer myproject]# git commit -m "add xixi.txt"
[master 32f0842] add xixi.txt
1 file changed, 1 insertion(+)
create mode 100644 xixi.txt
# 确认master分支只有自己的文件
[root@Programer myproject]# ls
readme.md test.txt xixi.txt
# 查看分支状态
[root@Programer myproject]# git branch -v
feature 0f44bf0 done test.txt
hotfix 108cf46 add haha.txt
* master 32f0842 add xixi.txt
# 合并hotfix分支到master分支
[root@Programer myproject]# git merge hotfix
#此时会进入一个文件,要你解释合并的理由,直接wq即可
Merge made by the 'recursive' strategy.
haha.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 haha.txt
# 确认hotfix分支的文件已合并到master
[root@Programer myproject]# ls
haha.txt readme.md test.txt xixi.txt
[root@Programer myproject]# cat haha.txt
haha
[root@Programer myproject]# cat xixi.txt
xixi
9.3.2 有冲突的分支合并
当修改了不同分支中相同文件的相同行时,系统无法自动合并分支,产生冲突。
bash
# 查看分支状态
[root@Programer myproject]# git branch -v
feature 0f44bf0 done test.txt
hotfix 108cf46 add haha.txt
* master b4bea28 Merge branch 'hotfix'
# 切换到hotfix分支
[root@Programer myproject]# git checkout hotfix
切换到分支 'hotfix'
# 在hotfix分支创建a.txt(内容为hahaha)
[root@Programer myproject]# echo "hahaha" > a.txt
[root@Programer myproject]# git add .
[root@Programer myproject]# git commit -m "hotfix"
[hotfix af8a04b] hotfix
1 file changed, 1 insertion(+)
create mode 100644 a.txt
# 切换到master分支
[root@Programer myproject]# git checkout master
切换到分支 'master'
# 在master分支创建a.txt(内容为xixixi)
[root@Programer myproject]# echo "xixixi" > a.txt
[root@Programer myproject]# git add .
[root@Programer myproject]# git commit -m "master"
[master f556200] master
1 file changed, 1 insertion(+)
create mode 100644 a.txt
# 尝试合并hotfix分支到master分支
[root@Programer myproject]# git merge hotfix
冲突(add/add):合并冲突于 a.txt
自动合并 a.txt
自动合并失败,修正冲突然后提交修正的结果。
# 查看冲突文件内容
[root@Programer myproject]# cat a.txt
<<<<<<< HEAD
xixixi
=======
hahaha
>>>>>>> hotfix
9.3.3 解决分支冲突
bash
# 手工编辑冲突文件,修改为最终需要的文件内容
[root@Programer myproject]# vim a.txt
[root@Programer myproject]# cat a.txt
xixixi
hahaha
# 添加解决冲突后的文件到暂存区
[root@Programer myproject]# git add ./
# 提交解决冲突后的版本
[root@Programer myproject]# git commit -m "resolv conflict"
[master 2a6f272] resolv conflict
9.4 分支与HEAD指针的关系
- 创建分支的本质是在当前提交上创建一个可以移动的指针
- 通过HEAD这个特殊指针判断当前分支

9.5 多分支提交的流程
- 切换分支,只是移动HEAD指针

- testing分支的提交,不会影响master

- 切换回master分支后,master的提交也不影响testing分支


十、Git标签操作(了解)
10.1 标签概念
- 标签用于标记某一提交点,唯一绑定一个固定的commit Id
- 相当于为这次提交记录指定一个别名,方便提取文件
- 可以为重要的版本打上标签
- 标签可以是一个对象,也可以当作一个简单的指针,但不会移动
10.2 Git标签管理
标签类似一个快照,打上标签的这一刻,标签就"指向"了已经被创建的快照
bash
# 查看已有标签
[root@Programer ~]# cd myproject/
[root@Programer myproject]# git tag
# 创建v1标签
[root@Programer myproject]# git tag v1
# 查看已有标签
[root@Programer myproject]# git tag
v1
# 创建v2标签
[root@Programer myproject]# git tag v2
[root@Programer myproject]# git tag
v1
v2
# 删除v2标签
[root@Programer myproject]# git tag -d v2
已删除标签 'v2'(曾为 2a6f272)
# 确认v2已删除
[root@Programer myproject]# git tag
v1
10.3 标签与分支的区别
| 特性 | 分支 (Branch) | 标签 (Tag) |
|---|---|---|
| 是否可移动 | 是,随着新提交而移动 | 否,固定指向某个commit |
| 用途 | 开发新功能、修复bug | 标记发布版本、里程碑 |
| 生命周期 | 持续演进 | 固化历史点 |
附录:常用Git命令速查表
| 命令 | 功能 |
|---|---|
git config --global user.name "name" |
设置用户名 |
git config --global user.email "email" |
设置用户邮箱 |
git config --list |
查看所有配置 |
git init [dir] |
初始化版本库 |
git status |
查看仓库状态 |
git add <file> |
添加文件到暂存区 |
git add . |
添加所有修改到暂存区 |
git commit -m "msg" |
提交到本地仓库 |
git log |
查看提交日志 |
git log --oneline |
查看简洁日志 |
git reflog |
查看HEAD移动历史 |
git reset --hard <commit-id> |
硬重置到指定版本 |
git branch |
查看分支列表 |
git branch <name> |
创建分支 |
git branch -d <name> |
删除分支 |
git checkout <name> |
切换分支 |
git merge <name> |
合并分支 |
git tag |
查看标签列表 |
git tag <name> |
创建标签 |
git tag -d <name> |
删除标签 |