当前位置: 首页 > news >正文

【devops】devops-git之git分支与标签使用

 本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

一、git分支

1.什么是分支

`分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中,
又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫”拍照功  能”的分支,这种分支只会属于你自己,
而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这样即能保证代码不丢失,又不影响其他人的工作。

img

2.分支的操作

1)查看 当前分支
`一般在实际的项目开发中,我们要尽量保证master分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件,
而工作的时候则可以新建不同的工作分支,等到工作完成后在合并到master分支上面,所以团队的合作分支看起来会像上面图那样。`
[root@git git_data]# git log --oneline  --decorate
3044a5a (HEAD, master) 错误的提交		#HEAD表示指针,master表示主分支,默认分支指向你最后一次的提交 HEAD头、指针
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
2)查看所有分支
[root@git git_data]# git branch 
* master		# * 表示当前所在的分支 
3)创建分支
[root@git git_data]# git branch test		# 新建test分支
[root@git git_data]# git branch 
* mastertest
[root@git git_data]# git branch dev
[root@git git_data]# git branch dev
* mastertest
4)切换分支
[root@git git_data]# git checkout test		        # 切换至test分支
Switched to branch 'test'
[root@git git_data]# git branch 			# 查看分支处于test中devmaster
* test
[root@git git_data]# git checkout dev
Switched to branch 'dev'
[root@git git_data]# git branch 
* devmastertest#如果当前分支有未提交的内容,不允许切换分支
[root@git git_data]# git checkout test
error: Your local changes to the following files would be overwritten by checkout:master
Please, commit your changes or stash them before you can switch branches.
Aborting
5)使用分支
#1.主分支创建文件并提交到本地仓库
[root@git git_data]# touch master
[root@git git_data]# git add master
[root@git git_data]# git commit -m "测试主分支提交代码"#2.切换到dev分支,查看工作区域,没有主分支创建的文件
[root@git git_data]# git checkout dev
[root@git git_data]# git branch 
* devmastertest
[root@git git_data]# ll
-rw-r--r-- 1 root root 4 Sep 17 17:40 3#3.普通分支创建文件并提交到本地仓库
[root@git git_data]# touch dev
[root@git git_data]# ll
total 4
-rw-r--r-- 1 root root 4 Sep 17 17:40 3
-rw-r--r-- 1 root root 0 Sep 21 22:52 dev
[root@git git_data]# git add dev
[root@git git_data]# git commit -m "测试dev分支提交代码"#4.切换到主分支查看
[root@git git_data]# git checkout master
Switched to branch 'master'
[root@git git_data]# ll
total 4
-rw-r--r-- 1 root root 4 Sep 17 17:40 3
-rw-r--r-- 1 root root 0 Sep 21 22:53 master
6)合并分支
#切换到主分支
[root@git git_data]# git branch dev
* mastertest
#合并dev分支的代码
[root@git git_data]# git merge dev#查看内容(主分支中多了dev分支中的内容)
[root@git git_data]# ll
total 8
-rw-r--r-- 1 root root 4 Sep 17 17:40 3
-rw-r--r-- 1 root root 0 Sep 21 22:58 dev
-rw-r--r-- 1 root root 0 Sep 21 22:58 master#切换回dev分支,修改代码内容
[root@git git_data]# git checkout dev
[root@git git_data]# echo dev > dev #再次切换回主分支,代码自动更新
[root@git git_data]# git checkout master
[root@git git_data]# ll
total 8
-rw-r--r-- 1 root root 4 Sep 17 17:40 3
-rw-r--r-- 1 root root 4 Sep 21 22:58 dev
-rw-r--r-- 1 root root 0 Sep 21 22:58 master#查看git提交日志
[root@git git_data]# git log --oneline --decorate
131f703 (HEAD, master) Merge branch 'dev'
4566cb6 (dev) 测试dev分支提交代码
525099c 测试主分支提交代码
3044a5a (test) 错误的提交			#test没有任何操作,所以停留在最后操作的时间点
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
7)合并冲突
#在主分支创建一个文件并提交到本地仓库
[root@git git_data]# git branch 
* mastertest
[root@git git_data]# echo master > master 
[root@git git_data]# git add .
[root@git git_data]# git commit -m '删除开发使用的分支及数据'#切换到普通分支,创建一个与主分支相同名字的文件
[root@git git_data]# git checkout test
[root@git git_data]# echo 1111 > master#提交普通分支的文件到本地仓库
[root@git git_data]# git add .
[root@git git_data]# git commit -m "在test分支创建一个与主分支一样的文件"#回到主分支进行分支合并
[root@git git_data]# git checkout master
[root@git git_data]# ll
total 8
-rw-r--r-- 1 root root 4 Sep 17 17:40 3
-rw-r--r-- 1 root root 7 Sep 21 23:11 master
[root@git git_data]# git merge test
Auto-merging master
CONFLICT (add/add): Merge conflict in master
Automatic merge failed; fix conflicts and then commit the result.#编辑冲突的文件,删除没有用的内容,保留需要代码
[root@git git_data]# vim master 
[root@git git_data]# git add .
[root@git git_data]# git commit -m "解决分支合并冲突"
[master 6f9367c] 解决分支合并冲突#解决分支合并,如果有修改内容需要再次合并
8)删除分支
# 当分支已经和主分支合并,那可以对分支进行删除处理
[root@git git_data]# git branch -d dev
Deleted branch dev (was 4566cb6).
[root@git git_data]# git branch
* mastertest

二、git标签

Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v2.0等等)。
当需要进行回滚操作可直接使用标签名进行回滚,便于记忆,无需使用id。

1.打标签

1)查看提交
[root@git git_data]# git log --oneline --decorate
6f9367c (HEAD, master) 解决分支合并冲突
a2993b3 在test分支创建一个与主分支一样的文件
70c9ada 删除开发使用的分支及数据
131f703 Merge branch 'dev'
4566cb6 测试dev分支提交代码
525099c 测试主分支提交代码
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
2)打标签
[root@git git_data]# git tag -a 2.0 -m "解决分支合并冲突以后的标签"-a		#指定标签的名字
-m		#给标签加注释,也就是指定说明文字#当没有指定标签打在那一次更新上,默认将标签打在最近一次提交的上面
[root@git git_data]# git log --oneline --decorate
6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突
a2993b3 在test分支创建一个与主分支一样的文件
70c9ada 删除开发使用的分支及数据
131f703 Merge branch 'dev'
4566cb6 测试dev分支提交代码
525099c 测试主分支提交代码
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
3)给指定提交打标签
[root@git git_data]# git tag -a v1.0 4566cb6 -m "测试给指定提交打标签"
[root@git git_data]# git tag
2.0
v1.0[root@git git_data]# git log --oneline --decorate
6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突
a2993b3 在test分支创建一个与主分支一样的文件
70c9ada 删除开发使用的分支及数据
131f703 Merge branch 'dev'
4566cb6 (tag: v1.0) 测试dev分支提交代码
525099c 测试主分支提交代码
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3

2.查看标签

[root@git git_data]# git tag
2.0
[root@git git_data]# git show v1.0   # 查看v1.0的信息  git show 加标签查看

3.根据标签回滚

#使用提交的ID进行回滚
[root@git git_data]# git reset --hard 3044a5a
HEAD is now at 3044a5a 错误的提交
[root@git git_data]# git log --oneline --decorate
3044a5a (HEAD, master) 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
[root@git git_data]# ll
total 4
-rw-r--r-- 1 root root 4 Sep 17 17:40 3#使用标签进行回滚
[root@git git_data]# git log --oneline --decorate
3044a5a (HEAD, master) 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3
[root@git git_data]# git reflog			#(可对回滚标签查看)
[root@git git_data]# git reset --hard v1.0
HEAD is now at 4566cb6 测试dev分支提交代码
[root@git git_data]# git log --oneline --decorate
4566cb6 (HEAD, tag: v1.0, master) 测试dev分支提交代码
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3[root@git git_data]# git reset --hard 2.0
[root@git git_data]# git log --oneline --decorate
6f9367c (HEAD, tag: 2.0, master) 解决分支合并冲突
a2993b3 在test分支创建一个与主分支一样的文件
70c9ada 删除开发使用的分支及数据
131f703 Merge branch 'dev'
4566cb6 (tag: v1.0) 测试dev分支提交代码
525099c 测试主分支提交代码
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3

4.删除标签

#删除标签
[root@git git_data]# git tag -d 2.0
Deleted tag '2.0' (was ed07882)
[root@git git_data]# git tag 
v1.0
[root@git git_data]# git log --oneline --decorate
6f9367c (HEAD, master) 解决分支合并冲突
a2993b3 在test分支创建一个与主分支一样的文件
70c9ada 删除开发使用的分支及数据
131f703 Merge branch 'dev'
4566cb6 (tag: v1.0) 测试dev分支提交代码
525099c 测试主分支提交代码
3044a5a 错误的提交
43f49f3 modified 3
90f573f rename 3 too
5d61056 rename 3.txt
a4566ae add new file 3

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器学习实战21-基于XGBoost算法实现糖尿病数据集的分类预测模型及应用
  • redis windows安装包下载路径
  • CGAL 从DSM到DTM filtering
  • 中间件之RocketMQ
  • BSN六周年:迈向下一代互联网
  • USB组合设备——鼠标+键盘(两个接口实现)
  • [全网首发]怎么让国行版iPhone使用苹果Apple Intelligence
  • JAVA语言之Solr的工作原理以及如何管理索引库
  • 设备无关色彩 vs 设备相关色彩空间
  • C# Redis 框架开发技术详解
  • 【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
  • 道路检测-目标检测数据集(包括VOC格式、YOLO格式)
  • Windows与Linux下 SDL2的第一个窗口程序
  • 【开发语言】写程序的两大基本原则(PO和NT原则)
  • 基于STM32设计的智能货架(华为云IOT)(225)
  • 时间复杂度分析经典问题——最大子序列和
  • $translatePartialLoader加载失败及解决方式
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 0基础学习移动端适配
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • ES6 ...操作符
  • HTTP请求重发
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Linux中的硬链接与软链接
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Spring Cloud中负载均衡器概览
  • windows下如何用phpstorm同步测试服务器
  • XForms - 更强大的Form
  • 蓝海存储开关机注意事项总结
  • 面试遇到的一些题
  • 人脸识别最新开发经验demo
  • 算法之不定期更新(一)(2018-04-12)
  • 正则表达式-基础知识Review
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #android不同版本废弃api,新api。
  • #DBA杂记1
  • #include<初见C语言之指针(5)>
  • #QT(一种朴素的计算器实现方法)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (差分)胡桃爱原石
  • (纯JS)图片裁剪
  • (附源码)计算机毕业设计高校学生选课系统
  • (南京观海微电子)——COF介绍
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (一)、python程序--模拟电脑鼠走迷宫
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net refrector
  • .NET面试题(二)