0

0

版本控制工具Git——分支管理

齐天大圣

齐天大圣

发布时间:2020-06-22 09:56:59

|

3235人浏览过

|

来源于php中文网

原创

分支是git的一个杀手级应用,和其他版本控制工具不一样的是,git创建及切换分支的效率极其高效。

分支简介

何为分支呢?我们从一个我们非常熟悉的场景来讲述,一个已经上线的产品,现在需要新增一个功能。这个时候,如果我们在原分支上继续开发的话,就很不方便,因为是一个已经上线的应用了,肯定需要先测试完毕后才能够上线。一般我们的做法是,建立一个新的分支,在这个新的分支上开发新的功能,测试完毕后,再合并到主分支上。

分支的创建、切换

目前我的版本库分支情况如下:

1.png

创建分支

现在我们创建一个新的分支,dev。创建分支的及查看分支命令如下:

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master

切换分支

分支已经建立成功了。现在我们来切换到新的分支,切换分支的命令如下git checkout 分支名

# git checkout dev
Switched to branch 'dev'

2.png

现在,我们在新的分支做一些修改,然后提交,然后切换到master分支上做点修改并提交。然后,我们看看分支的状态。

git vim config.php # 修改config.php文件
git add . && git commit -m 'add config.php'

git checkout master # 切换到主分支
git vim config.php
git add . && git commit -m 'change config.php'

3.png

$ git log --oneline --decorate --graph --all
* ca4589c (HEAD -> master) add config file
| * 43a5a8f (dev) add config.php
|/
* 19e3186 add index.php
* 9cc82f9 first commit

一条命令完成分支的创建及切换分支

git checkout -b 新分支名

分支的合并

首先引入一个场景,该场景非常的常见:

  • 一个系统已经上线

  • 该系统需要更新一个新的功能,所以你新建了一个分支(dev)并在此分支上开展工作。

  • 此时,系统突然出现的一个问题,需要紧急排查处理。

  • 那么,这时候你需要先切换到线上版本(master),然后新建立一个分支(fixbug),在新的分支上修正错误

  • 完成测试后,切换到线上分支,然后来合并fixbug分支,再将改动推到线上的分支。

  • 最后,我们就可以切换到dev分支来继续工作了。

目前,我们版本库状态如下:

4.png

现在,需要新建一个新分支,在新分支上添加新的功能。

git checkout -b dev

然后在新的分支上做一些修改。

新秀B2C商城系统
新秀B2C商城系统

新秀B2C商城系统是一款简洁易用PHP商城系统。可免费下载使用,可用于商业用途,没有时效限制,除版权标识外,所有代码都允许修改。后台功能简介:1、商城设置:基本信息,配送方式,配送范围,支付方式,财务管理;2、商品管理:商品列表,添加商品,商品分类,商品品牌,商品属性;3、订单管理:订单列表,缺货登记;4、用户互动:用户管理,留言管理,评论管理,网站公告,在线客服,用户协议;5、文章管理:文章列表

下载

5.png

此时,发现线上出现了一个严重的bug,需要紧急处理。那么,首先我需要切换到master分支。但在切换的时候发生了一个错误

$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
        login.php
Please commit your changes or stash them before you switch branches.
Aborting

以上错误我们经常会碰到,这是因为在合并分支的时候,工作区和暂存区必须是“干净”的。有两种方法可以达到上述要求

  • 提交修改

  • 暂存

我们这里使用暂存的方法来演示

$ git stash
$ git checkout master
Switched to branch 'master'

当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

现在,我们新建fixbug分支,在这个分支上修复bug。

$ git checkout -b fixbug

合并分支

修复完成且测试通过时,就可以把它合并到master上了。合并使用git  merge 分支名

$ git checkout master Switched to branch 'master' 
$ git merge fixbug

删除分支

这个时候,fixbug功能已经完成了,可以将它给删除掉了。

$ git branch -d fixbug 
Deleted branch fixbug (was cca73bb).

现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。

$ git checkout dev

$ git stash pop
On branch dev
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   login.php

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (2f8476defbaa813e31f3e1b081f5b88416b2ff50)

新功能完成后,提交到版本库。

7.png

冲突解决

现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

$ git checkout master
Switched to branch 'master'

$ git merge dev
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.

提示我index.php合并的时候有冲突,我们来看看该文件

$ cat index.php
>>>>>> dev

$ cat index.php 

然后再add并提交,最后在提交

$ git commit -m 'merge dev'

这个时候就合并成功了,现在就去删除dev分支吧。

$ git branch -d dev

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.7万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号