欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Git―分支管理

Git―分支管理

2025/2/11 12:45:28 来源:https://blog.csdn.net/m0_74365243/article/details/135999316  浏览:    关键词:Git―分支管理

Git

  • ⛅创建&切换&合并分支
  • ⛅删除分支
  • ⛅合并冲突
  • ⛅合并模式
  • ⛅Bug 分支
  • ⛅强制删除分支

master → 主分支

# 查看本地所有分支
git branch

在这里插入图片描述
分支前面的*, 代表当前所在的分支

图中当前所在的分支为master

⛅创建&切换&合并分支

# 创建分支
git branch "branchname"
# 切换分支
git checkout "branchname"
# 合并分支
git merge "branchname"
# 创建&切换分支
git checkout -b "branchname"

在这里插入图片描述

新创建的分支(dev)默认会指向当前所在的分支(master)的最新提交

在这里插入图片描述
在这里插入图片描述

  • 合并分支
    • HEAD指向dev分支(切换分支到dev)
    • dev分支下执行修改操作, 然后add&commit该内容(此时切换到master分支并不会看到dev分支提交的内容)
    • HEAD指向master分支(切换分支到master)
    • git merge dev → 将dev分支的内容合并到master分支

⛅删除分支

# 删除分支
git branch -d "branchname"

注意

不能在当前分支删除当前分支

在这里插入图片描述
创建&合并&删除分支非常快, 因此Git鼓励使用分支完成某个任务, 合并后再删掉分支. 这和直接在master分支上工作效果是⼀样的, 但过程更安全

⛅合并冲突


master 分支下存在一个 ReadMe 文件, 内容如图

在这里插入图片描述

创建&切换分支到dev1(git checkout -b dev1)

在这里插入图片描述

修改 ReadMe 中的内容

在这里插入图片描述

dev1分支下对 ReadMe 执行add&commit

切换分支到master(git checkout master)

在这里插入图片描述
修改 ReadMe 中的内容

在这里插入图片描述

master分支下对 ReadMe 执行add&commit

合并分支(git merge dev1) → 合并冲突

在这里插入图片描述

查看 ReadMe 中的内容

在这里插入图片描述

<<<<<<< HEAD=======
这之间的内容表示当前分支的内容
=======>>>>>>> dev1
这之间的内容表示 dev1 分支的内容

对于冲突的部分, 需要我们自行选择进行保存 → 保存后需要执行add&commit

git log --graph --abbrev-commit → 查看合并过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

⛅合并模式


合并分支时, 如果可能, Git 会采用Fast-forward模式

在这里插入图片描述

合并结果如图

在这里插入图片描述

Fast forward模式下, 删除分支后, 查看分支历史时, 会丢掉分支信息, 无法确定最新提交的内容是merge进来的还是正常提交的

但在合并冲突部分, 通过解决冲突问题, 会再进行一次新的提交
这种模式就不属于Fast forward模式 → no-ff(非Fast forward模式)

在这里插入图片描述

在这里插入图片描述

这样就能够从分支历史上查看分支信息 → 能够确定最新提交的内容是merge进来的还是正常提交的

Git 支持我们强制禁用Fast forward模式, 即在merge时生成一个新的commit

# 合并 dev2 分支提交的内容到当前分支(采用 no-ff 模式)
[root@VM-8-11-centos gitcode]# git merge --no-ff -m "merge with no-ff" dev2
Merge made by the 'recursive' strategy.ReadMe | 1 +1 file changed, 1 insertion(+)

在这里插入图片描述

⛅Bug 分支

⛅强制删除分支


在这里插入图片描述

产品经理要求开发一个新的功能

此时开发人员就会从当前内容下创建一个新的分支来开发新的功能

在这里插入图片描述

做到一半时, 产品经理说这个功能被取消了

于是开发人员只能将当前创建的分支进行删除

但是对于这种已提交(commit)但没有进行合并(merge)的分支, 不能使用git branch -d "branchname" 命令进行删除

使用git branch -D "branchname"进行强制删除

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com