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

【Git】分⽀管理

【Git】分⽀管理

    • 创建分⽀(git branch dev)
    • 切换分⽀(git checkout dev)
    • 合并分⽀(git merge dev)
    • 删除分⽀(git branch -d dev)
    • 合并冲突
    • git log --graph --pretty=oneline --abbrev-commit
    • 分⽀管理策略
    • 分⽀策略
    • bug 分⽀(git stash:储藏当前的⼯作区信息)
      • 预防合并冲突
    • 删除临时分⽀(未commit):git branch -D dev3

创建分⽀(git branch dev)

git branch #查看当前本地所有分⽀
git checkout -b dev1 # 创捷一个新分⽀ dev1 ,并切换⾄⽬标分⽀
git branch dev #新建分⽀dev后,目录:.git/refs/如图所示
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

切换分⽀(git checkout dev)

切换分⽀后:HEAD指针就指向你切换的分支,而HEAD指向的分支就是当前操作的分支,git branch查看所有分支,前面有*的为主分支(当前分支)
git checkout dev# 切换到dev分⽀,即改变HEAD指针的指向

HEAD 已经指向了 dev,表⽰已经成功的切换到了 dev 上
在这里插入图片描述
在这里插入图片描述

在dev分⽀上提交,⽽master分⽀此刻的提交并没有变,所以他们分支查看到的东西不一样(若有一个分支改变过)
在这里插入图片描述

合并分⽀(git merge dev)

要将 dev 分⽀合并到 master 分⽀,当前分支操作合并分支的时候会奖操作的分支合并到当前分支,我们欲合并到master分支,所以要先切换到master分支

  1. git checkout master # 切换到 master 上进⾏合并
  2. git merge dev # 合并 dev 分⽀,git merge 命令⽤于合并指定分⽀到当前分⽀

两分支东西不一样,合并后,master 就能看到 dev 分⽀提交的内容了
在这里插入图片描述

删除分⽀(git branch -d dev)

当前正处于某分⽀下,就不能删除当前分⽀,欲删除dev分支,先切换到其他分支(master)

git branch -d dev // 删除分⽀dev

在这里插入图片描述

合并冲突

在这里插入图片描述

master,dev分⽀各⾃都分别有新的提交,种情况下,Git 只能试图把各⾃的修改合并起来,但这种合并就可能会有冲突,此时我们必须要⼿动调整冲突代码,并需要再次提交修正后的结果
在这里插入图片描述

冲突就解决完成,此时的状态变成
在这里插入图片描述

git log --graph --pretty=oneline --abbrev-commit

在这里插入图片描述

git log也可以看到分⽀的合并情况,

git log --graph --pretty=oneline --abbrev-commit # 用于以简洁直观的方式展示提交历史和分支关系

  1. –graph
    以 ASCII 字符绘制分支合并的拓扑图,直观展示分支之间的关系
  2. –pretty=oneline
    指定提交信息的显示格式,将每个提交压缩为一行显示
  3. –abbrev-commit
    简化 commit hash 的显示,只显示前 7 个字符(默认长度),而不是完整的 40 个字符哈希值

分⽀管理策略

合并分⽀时,如果可能,Git 会采⽤ Fast forward 模式:
Fast forward 模式下,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提
交到底是 merge 进来的还是正常提交的

在这里插入图片描述

**
–no-ff : 强制禁⽤ Fast forward 模式**,那么就会在 merge 时⽣成⼀个新的 commit ,这样,从分⽀历史上就可以看出分⽀信息

git merge --no-ff -m “merge with no-ff” dev2

在这里插入图片描述

分⽀策略

实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理:

  1. master分⽀应该是⾮常稳定的,仅⽤来发布新版本,平时不能在上⾯⼲活;
  2. dev分⽀上⼲活

团队合作的分⽀:
在这里插入图片描述

bug 分⽀(git stash:储藏当前的⼯作区信息)

假如我们现在正在 dev2 分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有 bug,需要
解决。在Git中,每个 bug 都可以通过⼀个新的临时分⽀来修复,修复后,合并分⽀,然后将临时分⽀删除

dev2 的代码在⼯作区中开发了⼀半,还⽆法提交,怎么办?

  1. git stash # 将当前的⼯作区信息进⾏储藏,被储藏的内容可以在将来某个时间恢复出来。
    那么⽤ git status 查看⼯作区,就是工作区⼲净的

  2. 基于master分⽀修复 bug,所以需要切回 master 分⽀,再新建临时分⽀来修复 bug
    修复完成后,切换到 master 分⽀,并完成合并,最后删除 fix_bug 分⽀

  3. git checkout dev2 # 回到 dev2 分
    git stash list # 查看储藏的dev2
    git stash pop # 恢复的同时把 stash 储藏删了
    git stash apply # 仅恢复

修复 bug 的内容,并没有在 dev2 上显⽰。此时的状态图为:

在这里插入图片描述

预防合并冲突

Master 分⽀⽬前最新的提交,是要领先于新建 dev2 时基于的 master 分⽀的提交的,所以我们
在 dev2 中当然看不⻅修复 bug 的相关代码。
我们的最终⽬的是要让 master 合并 dev2 分⽀的,那么正常情况下我们切回 master 分⽀直接合
并即可,但这样其实是有⼀定⻛险的。是因为在合并分⽀时可能会有冲突,⽽代码冲突需要我们⼿动解决(在 master 上解决)。
我们⽆法保证对于冲突问题可以正确地⼀次性解决掉,因为在实际的项⽬中,代码冲突不只⼀两⾏那么简单,有可能⼏⼗上百⾏,甚⾄更多,解决的过程中难免⼿误出错,导致错误的代码被合并到 master 上。
此时的状态为:

在这里插入图片描述
解决这个问题的⼀个好的建议就是:最好在⾃⼰的分⽀上合并下 master ,再让 master 去合并
dev ,这样做的⽬的是有冲突可以在本地分⽀解决并进⾏测试,⽽不影响 master 。此时的状态
为:
在这里插入图片描述
在这里插入图片描述

删除临时分⽀(未commit):git branch -D dev3

git中,对于还没有commit的临时分支用git branch -d dev3无法删除
git branch -D dev3 # 大D即可

http://www.dtcms.com/a/410021.html

相关文章:

  • 半导体制造常见分析仪器之高分辨率 3D X 射线显微镜
  • PCB 半固化片:多层板制造的技术基石,猎板的场景化适配与质控逻辑
  • 番禺网站设计与制作广州海佳网络网站建设公司怎么样
  • Spring Cloud 负载均衡(LoadBalancer)与服务调用(OpenFeign)详解
  • 基于HTTP构建局域网内YUM网络源:详细操作指南(太细)
  • Java核心 之JVM
  • 通过 GAC Code 在国内使用ClaudeCode,Windows 用户配置指南!
  • iOS App 上架流程详解,苹果应用发布步骤、App Store 审核规则、ipa 文件上传与测试分发实战经验
  • 线程安全之《Sychronized的八锁案例》
  • 用户态的epoll实现思路?
  • TextMeshPro文字消失bug解决方案
  • 学习网站开发教程wordpress 五分钟
  • 联邦学习中的异质性问题
  • 将照片从iPhone传输到联想笔记本的6种方法
  • 东莞网站设计找哪里易商官方网站
  • 本机可以做网站的服务器互联斗士网站建站
  • 基于 GitLab 的自动化镜像构建
  • Spark核心Shuffle详解(一)ShuffleManager
  • Android 开发环境解析:从SDK、NDK到版本兼容性指南
  • 基于YOLO8+flask+layui的行人跌倒行为检测系统【源码+模型+数据集】
  • Mysql DBA学习笔记(日志)
  • 平替MongoDB:金仓多模数据库助力电子证照国产化实践
  • QT6中QGraphicsView功能与应用
  • WSL2搭建Hadoop伪分布式环境
  • 新闻媒体发稿平台排名Top5,聚合型新闻发稿服务平台推荐
  • Linux(4)|入门的开始:Linux基本指令(4)
  • (七)API 重构的艺术:打造优雅、可维护的 API
  • MAC idea 环境变量设置失效
  • 百度站长收录提交入口深圳设计网站源码
  • 2025Unity超详细《坦克大战3D》项目实战案例(上篇)——UI搭建并使用和数据持久化(附资源和源代码)