git 分支创建、切换和合并

news/2024/4/29 6:37:49/文章来源:https://blog.csdn.net/caohongxing/article/details/129689445

1.理解分支

为了便于理解,大家可以粗略的将分支认为就是一个代码的副本。

如果我们同时在一个代码上开发多个功能。还要修改一些bug,团队成员协作过程中,必然会出现相互影响。

假如某个同事提交了一个错误的代码,可能会导致其他更新了代码的同事都无法正常编译。互相影响。

一个比较好的做法是,我们开发一个新的功能,或者修改一个bug时,我们可以拉出一个分支。在这个分支上的操作不会影响其他同事的工作,待你的工作完成后,你可以将代码再合并回最新代码中。

2. 常见分支master 、develop、release、hotfix、feature的用处

1)主分支master 对外发布版本的分支

当我们最初向git提交时,会自动产生一个master分支

主分支一般保存对外发布的版本。

2)develop分支 开发分支

为了保持主分支上代码的稳定(主分支通常保存向用户发布的版本),开发工作不在主分支上进行,而是在develop分支上进行。

当develop完成开发任务后,黑冰到master分支

3)feature分支

所有的团队成员在develop上工作,为了保持开发分支的稳定性,每个功能开发时都应拉出一个分支,是基于develop分支,当开发到完成后合并到develop

在开发过程中,当要开发某个功能时,会拉出一个功能分支

4)hotfix分支

当修改bug时,也可以从开发分支(develop)上拉出分支,在分支上修改,完成后,再讲代码合并到开发分支(develop)

3.git分支命令

git branch -v 查看分支

git branch 分支名 创建分支

git checkout 分支名 切换分支

git checkout -b 分支名 创建并切换到分支(等价于 git branch 分支名+git checkout 分支名)

git merge 分支名 将指定的分支合并到当前分支

git branch -d 分支名 删除指定名称的分支(分支被合并后才允许删除,如果要删除,需要使用-D 强制删除)

4. git分支实操

1) 准备工作

为了方便进行后续的代码合并以及冲突的测试,请大家克隆你的码云上的最新的cmo_week04 到本地文件夹“week502”。

  1. 请大家使用自己的gitee账号登录gitee.com

  1. fork 仓库https://gitee.com/caohongxing7604/cmo_week04 到你的gitee上

  1. 创建一个文件夹week502

  1. 在week502de父目录中打开git命令窗口

  1. 执行 git clone ,记得把中间的地址改为你的仓库地址奥

git clone https://gitee.com/caohx666/cmo_week04 week502/

2) git branch 查看分支

进入到刚才创建的week502目录,右键点击 git Bash here.. 打开git命令窗口,

输入:git branch -v

这个命令练习起来,后面我们要反复使用该命令奥!

3)git branch 分支名 创建分支

下面我们的实验创建develop分支,然后再develop上再依次创建2个分支:feature_add分支 和feature_ sub 分支,分别用来开发add功能和sub功能。

git branch develop 创建develop分支

git checkout develop 切换到develop分支

git branch feature_add 创建一个名为add的分支,注意,此时仍在原来的分支上

git branch feature_sub 创建另一个名为sub的分支,用来开发 sub 功能

git branch 查看分支情况

4)git checkout 分支名 切换分支

上一步我们已经创建了分支。

在这一步,我们要模拟两位开发切换到他们的分支,提交代码到各自的分支上。

首先模拟开发1切换到分支feature_add上提交代码,并提交到本地仓库

  1. 下面我们切换到feature_add分支上,并添加一个 add.txt 的文件,

  1. feature_add分支上,并在001.txt的文件的第六行之后删除掉,末尾添加add函数

int add(int x , int y)

{

return x+y;

}

  1. 提交以上修改到本底裤,日志为:xxx 分支git branch feature_add 上修改 新增了add函数

然后模拟开发2切换到分支feature_sub上提交代码,并提交到本地仓库

  1. 下面我们切换到feature_sub分支上,修改001.txt,将5行之后的内容删除,加上sub函数

int sub(int x , int y)

{

return x-y;

}

  1. .提交分支 feature_sub 上修改,日志为:xxx 分支git branch feature_sub 上修改 新增了sub函数 xxx为学生姓名

需要注意的是,当前分支如果有未提交到暂存区的修改,切换分支会有错误提醒,提示你提交修改或者保存文件

我们此时,你可以将修改commit到本地仓库,

如果你觉得还没有修改好,那你也可以使用git stash 将其隐藏,以后再切换回分支时,再将其恢复

5)git merge 分支名 合并分支

合并分支时,需要先切换到目标分支,然后再合并。

为了减少后期冲突,合并前,建议git pull 从服务器上拉取最新代码。

(1) 将分支 git branch feature_add 合并到主干

我们切换到develop分支上,将feature_add 分支合并到develop

(2)将分支git branch feature_sub 也合并到主干

我们切换到develop分支上,将feature_add 分支合并到develop

合并过程中,由于feature_add 和feature_sub分支修改了相同行,提交时会提示冲突,需要手动解决冲突。

如果你安装了 TortoiseGit。则可以通过图形化工具来解决冲突,如果没有,直接查看001.txt也可以

手动解决冲突后,再次 添加到暂存区后,提交到本地库

6)将develop、feature_add feature_sub分支提交到远程仓库

如果愿意,大家也可以将分支推送到远程分支

6)git branch -d 分支名 删除分支

删除分支前,需要切换到其他分支

7)查看日志,截屏

git log --oneline --graph --decorate --all 是常用的日志查看命令

截屏日志结果

4.gitee仓库的删除

在确认窗口中,输入确认信息后,点击【确认删除】,则可以成功删除仓库

在验证码确认窗口上输入账户密码后,点击【验证】

5.git 冲突解决

git pull --allow-unrelated-histories

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_274013.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计循环队列(LeetCode)题目

这个也是力扣的题目,所以我们还是直接看 请自己看题目 下面就看思路吧,首先是循环队列,我们想一下循环队列如何设计,用什么设计比较好一点,用顺序表还是链表 这里用链表看起来比较简单,因为他是循环的&am…

干货|小白1分钟搞懂SRM管理系统

SRM管理系统是用来管理供应商,以及采购方和供应商进行采购交易的一套管理系统,在很多生产类企业中,往往是需要和ERP管理系统集成使用。原因:1.ERP管理系统无法实现采购商与供货商的有效协作;2.SRM管理系统对供应商的管…

Java分布式事务(七)

文章目录🔥Seata提供XA模式实现分布式事务_业务说明🔥Seata提供XA模式实现分布式事务_下载启动Seata服务🔥Seata提供XA模式实现分布式事务_搭建聚合父工程构建🔥Seata提供XA模式实现分布式事务_转账功能实现上🔥Seata提…

考研复试7 汇编语言、编程语言

一、寄存器 1. 寄存器概述 (1)典型的CPU包括器件 运算器控制器总线:内部总线实现CPU内部各个器件之间的联系;外部总线实现CPU和主板上其它器件的联系。 (2)8086CPU有14个寄存器,它们的名称为…

git查漏补缺之 stash

git查漏补缺之 stash Start 最近在工作的过程中,遇到 git 中的stash 暂存这个命令,感觉非常有用,写一个博客记录一下。 1. stash 首先第一个就是 stash ,英译过来的意思就是 存放/贮藏。 主要的使用场景: 我正在…

最好用的Markdown编辑器:MWeb Pro mac

MWeb pro Mac中文版是一款非常好用的Markdown编辑器和博客生成工具,支持语法高亮,预览,Fenced code blocks和代码高亮,Math ML支持,具有导出HTML/PDF,自定编辑器主题,字数统计,大纲视…

Linux--MySQL数据库的基本概念、编译安装以及MySQL数据库自动补全功能的实现

文章目录一.数据库的基本概念1、数据(Data)2、表3、数据库4、数据库管理系统(DBMS)5、数据库系统6、访问数据库的流程二.数据库系统发展史1、第一代数据库2、第二代数据库3、第三代数据库三、当今主流数据库介绍1、SQL Server (微…

电商出海:阿里、拼多多“快马扬鞭”

配图来自Canva可画 经过多年的发展,电商已经逐渐深入人们的日常生活中了,人们也愈发习惯使用电商平台了。得益于消费者需求的持续增长,电商行业的体量规模也在持续扩大,行业内也涌现出了诸多电商平台,比如淘宝、京东、…

error: C1083: 无法打开包括文件: “QtGui/QApplication”: No such file or directory

Qt系列文章目录 文章目录Qt系列文章目录前言一、原因二、解决办法1.修改pro工程文件2.在main.cpp中三、总结前言 当我们从网上或者从打开别人的工程师,报错,C1083: 无法打开包括文件: “QtGui/QApplication”。 原因:Qt5里不再用QtGui模块&a…

docker 安装 nginx无坑版

一. 拉取镜像 docker pull nginx二. 创建挂载目录 mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/log mkdir -p /usr/local/nginx/html三. 从nginx容器里复制nginx的配置文件到主机里 创建个容器 docker run --name nginx -p 80:80 -d nginx将容器内的配置文件…

mysql之窗口函数练习

🍊今天复习一下mysql中的窗口函数,主要是通过几道练习题复习和加深一下对窗口函数的理解,对往期内容感兴趣的同学可以参考如下内容👇: 链接: 牛客SQL大厂真题——某音短视频.链接: 京东数据分析SQL面试题.链接: 百度用户增长SQL面…

Java实习生------MySQL10道面试题打卡

今日语录:“没有执行力,就没有竞争力 ”🌹 参考资料:图解MySQL、MySQL面试题 1、事务有哪些特性? 原子性: 一个事务中的所有操作,要么全部完成,要么全部不完成,不会出现…

Linux系统的安装以及参数配置 -- VMware(虚拟机)安装--ubuntu 20.04--VMware Tools工具安装

Linux系统的安装以及参数配置 PS:本文章为上课后整理笔记,作为以后学习工作的学习使用,也作为一次课程记录 一、Linux系统的安装常用方法 – 3种 1.直接Linux操作替换Windows – 专业Linux开发者 – 接受Linux相关软件的使用 2.安装双系统…

诗佛王维,眼前的苟且和远方的田野?

转自:媲美李白杜甫的诗人,他的人生可以复制_百科TA说 (baidu.com)他受到的羁绊,他做出的选择,提供了一种温润平和的过日子模式。大部分人无法决绝地脱离社会,隐遁起来,也无法在社会中不计底线,混…

JavaScript性能优化小窍门汇总(含实例)

在众多语言中,JavaScript已经占有重要的一席之地,利用JavaScript我们可以做很多事情 , 应用广泛。在web应用项目中,需要大量JavaScript的代码,将来也会越来越多。但是由于JavaScript是一个作为解释执行的语言&#xff…

Vue|样式绑定

class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。 文末名片获取源码 精…

根据平均分来划分等级-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第2章-课后作业)

【案例2-1】 根据平均分来划分等级 一、案例描述 考核知识点 switch语句 练习目标 掌握switch语句的使用。 需求分析 switch语句也是多分支语句,针对某个表达式的值做出判断,来决定执行哪一段代码,本案例用于实现根据输入的小明同学的5门课…

百度CTO王海峰:全栈AI技术加持,打造新一代大语言模型文心一言

3月16日,百度在北京总部召开新闻发布会,百度创始人、董事长兼首席执行官李彦宏和百度首席技术官王海峰出席,李彦宏展示了新一代知识增强大语言模型文心一言在文学创作、商业文案创作、数理逻辑推算、中文理解、多模态生成五个使用场景中的综合…

【linux】管道pipe(),dup()系统调用

int pipe(int p[2]) 函数作用:生成一个管道,将管道读端的文件标识符存到p[0]中,将管道写端的文件标识符存到p[1]中。返回值:若成功返回0,失败返回-1 管道的理解 如图,当创建完管道以后的父进程fork出两个子…

Python中模块是个啥

昨天有粉丝问我说,啥是模块?经常听别人口中提这个词,但就是不懂。 模块可以认为是一盒主题积木,通过它可以拼出某一主题的东西。这与之前介绍的函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函…