5 Git 分支操作


5.1 什么是分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作
从开发主线上分离开来,以免影响开发主线。

5.1.1 Git master 分支的理解:

        master 分支并不是一个特殊分支,它跟其它分支没有区别。 之所以几乎每一个仓库都
master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它,是默认分
支。

5.1.2 实际开发的场景:

在版本控制过程中,同时推进多个任务,为每个任务创建一个单独分支。每个程序员在
自己的分支里写代码,开发完成后提交。小组长负责合并分支到主干 master、测试、发布新
版本。
        使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,
不会影响主线分支的运行。
        对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。

5.2 分支的好处

 

 
  • 同时并行推进多个功能开发,提高开发效率。
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。 失败的分支删除重新开始即可。

5.3 分支的操作

5.3.1 查看分支

1)基本语法

git branch -v

2)使用举例

此时只有一个分支。

5.3.2 创建分支

1)基本语法

git branch 分支名

2)使用举例

说明:因为 hot-fix 分支是从 master 分支拷贝过来的,所有后面的 id 是相同的。

5.3.3 修改 master 分支

1)在 master 分支上做修改

2)添加暂存区

3)提交本地库

4)查看分支

说明:此时两个分支的 id 版本不同了。

5)查看 master 分支上的文件内容

5.3.4 切换分支

 

1)基本语法

git checkout 分支名

2)使用举例

  • 分支由 master 改为 hot-fix

  • 查看 hot-fix 分支上的文件内容发现与 master 分支上的内容不同
  • 创建分支和切换分支图解:
        Master、Hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 Head
决定的。
        Head 如果指向 master,那么我们现在就在 Master 分支上,Head 如果执行 Hot-fix,那
么我们现在就在 Hot-fix 分支上。
        所以切换分支的本质就是移动 Head 指针

5.3.5 修改子分支

1)在 hot-fix 分支上做修改

2)添加暂存区

3)提交本地库

        注意:此时 master 分支和 hot-fix 分支是独立的两套代码。

5.3.6 合并分支

1)基本语法

git merge 分支名
说明:在当前分支下,将其它分支的代码合并过来。

2)使用举例

  • 切换回到 master 分支

  • master 分支上合并 hot-fix 分支

        如果 master hot-fix 分支只有一个分支修改过,则合并不会出现冲突;如果两个分支
都各自修改过同一份文件,则合并会出现冲突。

5.3.7 产生冲突

1)冲突产生的表现:后面状态为 MERGING

 

2)冲突产生的原因:

        合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须手工解决新代码内容。

3)查看状态(检测到有文件有两处修改)

5.3.8 解决冲突(三步骤)

1)步骤 1:编辑有冲突的文件

        这里手动编辑并处理有冲突的文件。
        具体操作:删除特殊符号,决定要使用的内容
        特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
        编辑冲突的文件,把“>>>>>>>>>”、“<<<<<<”和“========”等这样的行删除,
编辑至满意的状态,提交。
2)步骤 2:添加到暂存区
3)步骤 3:执行提交
        提交后,发现后面 MERGING 消失,变为正常。
        注意:此时使用 git commit 命令时不能带文件名。因为我们解决冲突,可能存在于多个
文件中,这里就不能也不需要指定具体的文件名了。

5.3.9 如何避免冲突

  • 各人维护各人的代码分支,要避免多个人在各自分支上修改同一个文件。
  • 避免在 master 分支上写代码。
        在一个项目中,配置类和工具类是可能被多人多个子模块共享的,都修改的话,怎么避
免冲突?回答:尽量由一个人进行统一的维护。修改好后,其他人来更新即可。

5.4 小练习

程序员猴子的 Git 使用经历:
拓展功能:git stash (不常用)

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐