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

【Git版本控制器】第四弹——分支管理,合并冲突,--no-ff,git stash

 🎁个人主页:我们的五年

🔍系列专栏:Linux网络编程

🌷追光的人,终会万丈光芒

🎉欢迎大家点赞👍评论📝收藏⭐文章

相关笔记:
https://blog.csdn.net/djdjiejsn/category_12893502.html

前言:

分布式版本控制系统(Distributed Version Control System,简称 DVCS)是一种将代码仓库完整地复制到每个开发者本地的版本控制系统。与集中式版本控制系统(如 SVN)不同,分布式版本控制系统中的每个开发者都拥有代码仓库的完整副本,包括所有的历史记录分支标签等信息。

目录

1.分支

1.1认识分支:

1.2创建分支:

1.3切换分支

1.4 在分支进行代码操作

2分支合并

2.1未发生合并冲突的合并:

2.2发生冲突的合并

3.删除分支:

4.Bug分支


1.分支

1.1认识分支:

在前面就讲过每一次提交都会有记录,有一条线,这是master的主分支。然而,我们还可以创建其他的分支,进行分支操作,分支编写代码。

下面就是没其他其他分支的master分支。

git log --graph --abbrev-commit

1.2创建分支:

git branch进行创建分支,没有加名字就是查看当前所有的分支,加上就是创建分支

git branch    //查看所有的分支
git branch (分支名)    //创建分支

比如我查看我现在的分支:

现在只有一个分支:master分支,然后我们创建了dev1,dev2分支。

然后就再次用git branch进行查看分支就有三个了。

* 绿色的就是当前所在的分支。*表示HEAD指向的哪个分支。

1.3切换分支

前面的git checkout -- 是撤销工作区的修改,撤销到最近一次的暂存区或者版本库。

但是不加--的意思就是分支切换了。

git checkout (分支名)    //分支切换

此时的HEAD就指向dev1分支了。

1.4 在分支进行代码操作

我们在dev1分支进行代码编写,然后完成一次add,commit操作以后,进行的就是dev分支进行操作。而且在其他分支下是看到这个新增的代码的。

在dev1新增,并且保存,在master分支,还有dev2分支都是看不到的。

要想在master分支看到,就要在master进行合并。


2分支合并

2.1未发生合并冲突的合并:

使用git merge进行分支合并。

git merge (分支名)

然后我们进行查看,就可以看到dev分支的内容了。

这时候就是正常的合并,没有出现合并冲突的。

特别注意一下Fast-forward这个,ff合并,不会产生新的commit信息。

下面的最新一次信息还是devcommit产生的信息。

这个用图示来解释就是master直接指向dev1分支了。

master直接就指向最新一次的dev1进行的commit。

简化的就是这样了:

正常情况下 ,merge如果没有发生冲突,也没有写--no-ff 进行合并,那么就是Fast forward模式进行合并,这种合并不会产生新的commit。这种合并,如果以后把分支删除了,就分辨不出来这部分是merge到master里面来的,还是正常master,commit提交的。所以我们不建议使用Fast forward模式进行操作。而是每次merge时都要--no-ff,表示不要进行Fast forward模式进行合并。

加上这个选项以后,就要-m "commit描述信息".

这样就会形成一个新的commit。

2.2发生冲突的合并

这种情况就要手动进行代码修改,然后再进行一次commit。

Auto-merging file1
CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.

提示信息说,自动合并出错,需要手动fix,然后进行commit最后的结构。

然后我们打开我们的file1

aaaaaaaaaaaaaaaaaa
dev1 add bbbbbbbbb
<<<<<<< HEAD
master master master
=======
dev dev dev dev dev
>>>>>>> dev

<<<<<<<<HEAD到=======是当前分支的内容。

=======到>>>>>>dev是dev分支修改的内容。

然后我们想要怎么修改,我们手动进行修改,再进行commit。

如果没有发生冲突,也是可以用--no-ff 进行mege形成新的commit的。


3.删除分支:

当分支合并以后,分支就基本没用了,我们就可以把分支删除了,使用的命令是:

git branch -d (已经合并的分支名)

这个只能删除已经合并的分支。

不能删除还没有合并的分支。

删除没有合并的分支,要d变为D才能删除。

git branch -D (未合并的分支名)

4.Bug分支

git stash的作用是保护还没有commit的工作区和暂存区。

git stash 的主要用途:
临时保存更改:当你正在开发某个功能或修复某个问题时,突然需要切换到另一个任务,但又不想提交当前未完成的更改。
清理工作区:在切换分支或合并代码之前,需要清理工作区,但又不想丢失当前的更改。
快速切换任务:在多个任务之间快速切换,而不需要频繁提交和回滚更改

//保存当前更改到 Stash
git stash

//切换到修复问题的分支
git checkout fix-branch

//修复问题并提交
git add .
git commit -m "Fix urgent issue"

//切换回原来的分支
git checkout feature-branch

//重新应用保存的更改
git stash apply
//将stash放到工作区
git stash pop

相关文章:

  • 大语言模型(LLM)提示词(Prompt)高阶撰写指南
  • 《论面向对象的建模及应用》审题技巧 - 系统架构设计师
  • Onvif协议NVR开发方案指南
  • SQL笔记#数据更新
  • [AI] [ComfyUI]理解ComyUI的基本原理及其图像生成技术
  • 深度学习技术全景图:从基础架构到工业落地的超级进化指南
  • flex布局自定义一行几栏,靠左对齐===grid布局
  • 三维空间中直线的多种表示方法
  • Python 基本语法的详细解释
  • 第1章大型互联网公司的基础架构——1.9 LSM Tree
  • 【每日八股】计算机网络篇(一):概述
  • 广东英语十二种应用文模版范文
  • 关于在mac中配置Java系统环境变量
  • MyBatis的CRUD
  • 2025最新版!Fiddler抓包实战:深度解析短视频评论采集技术
  • 为AI聊天工具添加一个知识系统 之118 详细设计之59 圣灵三角形和Checker 之1
  • Gin从入门到精通 (五)数据绑定与验证
  • AI绘画软件Stable Diffusion详解教程(1):版本发展历程与选择建议
  • 【SpringMVC】十分钟跑起来一个SpringMVC项目
  • Windows 中常用的快捷键
  • 郑州证件制作/seo优化技术教程
  • 设计公司网站应该包括的信息/西安百度竞价代运营
  • 光谷网站开发/快速排名优化推广手机
  • 邯郸网站制作费用/怎样做引流推广
  • 品牌百度网站建设/品牌全案营销策划
  • 商城微网站建设多少钱/山东泰安网络推广