热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

git学习笔记(10分支例子)

一,常规情况下操作1-1,正常情况下,已经有稳定的代码版本了。1-2,现在想要更新项目,就新建一个分支&#x

一,常规情况下操作

1-1,正常情况下,已经有稳定的代码版本了。
在这里插入图片描述
1-2,现在想要更新项目,就新建一个分支:
在这里插入图片描述
可以看到,head指向master,而新分支也指向当前的版本,只是此时head没有指向它而已。
在这里插入图片描述
1-3,现在我们想在新分支上修改代码,而不影响原有master版本的代码,则可以把head切换到bran1分支上来,这样工作区就变成新分支bran1下的了。
在这里插入图片描述
1-4,现在可以进行代码修改等操作,然后提交新版本。
在这里插入图片描述
可以看到,master已经被保留下来了,而我们此时是在bran1分支下进行操作。
在这里插入图片描述
1-5,如果想切换回到master主分支上来,那就切换呗,不过值得注意的是,一旦切换,工作区中的内容就会变成master对应版本的文件内容了。
在这里插入图片描述
在这里插入图片描述
此时的版本信息是上图这样的。
在这里插入图片描述
实际上,切换分支会变更三个地方,第一个是head的指向,第二个是暂存区,第三个地方是工作区。
所以,每次切换分支前,当前分支一定要是干净的!(全部提交了)
在这里插入图片描述
1-6.为什么说切换分支时当前分支一定要是干净的呢?
仔细考虑一下,如果在当前工作区新建了一个文件,没有纳入git管理,那么一旦切换分支,因为这个文件没有纳入管理,则git管不了它,他就会出现在切换的分支那边,容易污染之前稳定的版本文件。
需要把新建的文件纳入git管理(add)之后才不会出现这种情况。
这种情况发生在文件第一次出现(未纳入git管理)时才会发生,如果已经纳入git管理了,又进行了变更而没有暂存和提交,则无法切换分支,会报错。
1-7,要避免这个问题也简单,只要你切换分支前检查下当前分支是干净的就不会出错。
在这里插入图片描述


二,一个小案例

在这里插入图片描述
此时的项目是这样的:
在这里插入图片描述
2-1,主分支的代码是稳定的,不能动,所以创建一个新分支:
之前我们创建一个新分支,然后让head指针指向它,现在有一个新的写法,可以一步到位:
git checkout -b "新分支名字"
此时假如我们正在解决日常的事物,新建了一个分支来进行代码的编写:
在这里插入图片描述
2-2,开始日常事务中解决#53的bug ,假设现在已经做了一半的工作。
在这里插入图片描述

就在这时候,有个紧急bug需要你去处理,但是你已经在53分支上做了一半工作了,这工作能删除嘛?显然不能,那就先停下来。
先把它提交一下:
在这里插入图片描述
再来看分支 情况:
在这里插入图片描述
2-3,现在就可以切换到主分支解决紧急问题了:
在这里插入图片描述
2-4,同样的,为了保证不影响主分支的代码。处理这个紧急bug又需要新建分支。
在这里插入图片描述
2-5,现在才开始着手解决这个紧急的bug。
在这里插入图片描述
在这里插入图片描述
如上图红圈,出现了两个分支,目前head指针指向正在修改bug的分支上。
假如此时已经解决了这个bug。
2-6,修复bug后合并到主分支。

1. 切换回到主分支。
2. 然后让主分支合并hotbug分支。

在这里插入图片描述
现在再来查看:
在这里插入图片描述
这种合并方式是快进合并,会产生一个问题:iss53分支现在过期了。。也就是说iss53分支上还没有修复bug。里面的主分支代码还是之前有bug的版本。
2-6,代码的bug解决完毕了,hotbug分支没有存在的意义了,那就把它删除掉吧。
在这里插入图片描述
你以为这样就结束了???
不,现在的主分支是修复了bug没错,但是此时的主分支仅仅在你自己的电脑上存在,中央管理的代码库里还是旧的,这时就需要你更新一下啦。
需要将本地修改的代码推到服务器上面去。(现在github还没学,先这样)
现在就相当于这个bug已经解决掉了,现在需要再切换回iss53继续今天的事务。
2-7,切换回当天事务:
目前这个iss53才完成了一半,但是为了切换出去紧急修复bug,提交了一次。
在这里插入图片描述
在这里插入图片描述
此时iss53已经被修改完成。现在要合并的话,又需要切换到主分支,然后合并:
2-7,依旧是快进合并
在这里插入图片描述
你会发现这个版本已经修复了bug。
值得注意的是,因为我们修复bug和修复iss53各自独立进行,所以合并只是简单的进行取并集而已。但若是两种更改都对同一个文件进行变更,此时合并会出现什么情况?
因为是相同文件,git又不知道你合并后要删除哪些,保留哪些,此时合并后,就会发生冲突,不过他会告诉你冲突的文件,只要点进去,修复一下冲突,再提交一下就可以了。
此时的合并叫做:典型合并
在这里插入图片描述
在这里插入图片描述
打开冲突哪个文件,哪个代码留下来,哪些删除。沟通完之后再add,commit就可以了。
2-8,这样一来,紧急bug修复好了,当天的事务iss53也好了:
在这里插入图片描述
现在分支少,还挺清晰,真正工作中,分支很多,超级难看。
现在为止,都是你自己在和自己解决代码版本啦,冲突啦这些问题,你自己心里有谱,还好解决。实际工作中的话,就是各种同事各种版本,要是发生冲突,就得和同事积极沟通了。说不过就打他,打到对方改为止(滑稽脸)
所以说,进公司后,第一步就是把同事打一顿,啊,不是,是先创建属于自己的分支。然后要新增代码啦,增加功能啦啥的,就在自己的分支上搞,就把问题变成自己和自己玩了,避免天天被同事打。
等你自己负责的功能完成了,再整合到主分支上即可。

在这里插入图片描述


推荐阅读
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
author-avatar
lnssm
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有