0


Git 分支管理

文章目录

一、理解分支

二、创建分支

查看已存在分支

git branch

之前我们讲过,HEAD 指向 master 分支,其实 HEAD 不仅可以指向 master 分支,还可以指向其他的分支,被 HEAD 指向的分支就是工作的分支。

创建分支

git branch [分支名字]

切换分支

git checkout [分支名字]

合并分支

git merge [分支名字]

将分支合并到当前所在分支

五、删除分支

这里重点说明:我们只能在其他分支上面删除此分支,也就是说所在分支和删除分支不能是同一个。

// 删除分支语句
git branch -d [分支名称]

以下是一个错误删除分支示范的删除分支,如下图,已切换到 dev 分支,但是进行删除 dev 分支,这显然是不能成功的。

下面进行正确示范,我们切回 master 分支,然后删除 dev 分支,删除成功,只剩下 master 分支。

虽然删除了 dev 分支,但是删除分支所进行的修改并没有被删除。因为创建、合并和删除分支非常快,所以 Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在 master 分支上工作效果是一样的,但过程更安全。

六、合并冲突

假如说 ReadMe 文件原来是 okk,分支 master 对 ReadMe 文件修改是 occ,分支dev1 对 ReadMe 文件修改为 obb,那么此时将两个分支合并,此时合并之后的文件是什么样的,这时会产生分支冲突。

创建 dev1 分支并切换到此分支

修改 ReadMe 文件为 obb,并提交到版本库
在这里插入图片描述

切换到分支 master,修改 ReadMe 文件为 occ,并提交到版本库

此时分支管理图为:

此时我们位于 master 分支,删除 dev1 分支,出现合并冲突。

进入 ReadMe 文件查看

可以直接在当前代码里进行修改,可以保留 master 或者 dev1 的代码,然后进行 add --》commit 操作。

此时 master 指向的索引为最新一次的修改,而 dev1 指向的还是原来的修改:


merge 冲突需要手动解决,并进行一次提交操作。

git log --graph --abbrev-commit

此命令会以一种图形化的方式展示提交历史

也可以使用这条命令:

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

七、合并模式

八、bug 分支

在实际开发中,假如正在开发已经写了一部分代码,但是此时发现该分支代码有 bug,此时该怎么办呢?

分支 master 和 dev2,此时指向同一个索引,无修改。

此时切换到 dev2 分支,模拟正在开发写代码,修改 ReadMe 文件,此时发现 master 分支有 bug,然后切换到 master 分支进行修改 bug,此时发现,ReadMe 文件在 master 分支里面也被修改了。(这些修改都是位于工作区的修改)

如果在 dev2 分支进行开发修改了工作区不想影响 master 的工作区的话,可以使用以下命令,将工作区的修改写入 stash 中

git stash

查看 git分支会发现 refs 下多出了一个 stash

查看发现工作区没有修改要提交的,dev2 和 master 分支下的 ReadMe 文件也没有被修改。
注意:创建 file4,但是此文件没有被放到 Git 仓库里面,所以不能被追踪,他被修改的内容也不能被放到 stash 里面。

创建一个分支 fix_bug 进行修改 bug,进入 ReadMe 文件修改 bug,提交到仓库,然后切换到 master 分支进行合并。此时 master 分支是修改完 bug 后的分支。

修改完 bug 后我们切换到 dev2 进行开发,我们发现开发的代码不在里面,这是因为在上面被放到了 stash 里面。

git stash list

查看 stash 里面存放了什么,

git stash pop

将 stash 里面的代码放出来,然后我们发现 ReadMe 文件里面的代码已经恢复到我们开发的状态。但是此时里面的 bug 没有被修复。

然后我们继续完成开发,开发完成之后进行提交代码。

但是此时有个问题是,修改了 bug 之后的代码并没有在 dev2 分支上,

如果我们直接在 master 上进行合并的话,那么就有可能发生合并冲突,导致 master 代码出差

所以我们应该先在 dev2 上进行合并,这样子就算发生冲突进行修改也不会影响 master 代码

然后再将 dev2 合并到 master 上

接下来按此方法进行操作,将 master 合并到 dev2,发生合并冲突

进入 ReadMe 文件进行修改冲突,然后 add–commit

然后再切换到 master 分支上,然后将 dev2 分支合并到 master,此次没有合并冲突

最后需要删除不需要的分支。

九、强制删除分支

加入你在新的分支开发一个功能时,但是此时这个功能不需要了,那么这个分支就需要被删除,但是此时传统的删除分支却删不了,这时我们需要进行强制删除。

创建并切换到一个新的分支 dev3,并且在 ReadMe 里面进行开发新功能,并且提交到仓库

此时我们切换到 master 分支进行删除 dev3,但是此时我们使用命令

git branch -D dev3

并没有删除,提示需要使用命令

git branch -D dev3

,尝试删除,查看分支,的确删除了分支 dev3

标签: git

本文转载自: https://blog.csdn.net/2301_79765510/article/details/143143183
版权归原作者 frost-cold 所有, 如有侵权,请联系我们删除。

“Git 分支管理”的评论:

还没有评论