图解Git对于分支的操作

简介: 图解Git对于分支的操作

一般情况下我们的git仓库会有多个分支,主分支就是master,在我看来大多数时候其余分支是用于保护主分支不被无意破坏。

1,什么是分支

我们知道,git每执行一次commit命令,就会把当前文件状态保存为快照存在仓库中。

分支就是为了将修改记录的整体流程分叉保存,每个分支不受其他分支的影响。

例如某个仓库进行了3次commit操作,可能如下图所示:

网络异常,图片无法展示
|

图中黑色矩形框代表我们每一次进行的commit生成的快照,蓝色圆角矩形框代表分支,紫色椭圆框代表头指针

可见这个仓库只有一个master分支,头指针指向我们当前正在操作的分支。

2,新建分支

有两个命令实现新建分支。

新建分支但仍然使用当前分支:

git branch 新分支名

新建分支并切换到新分支:

git checkout -b 新分支名

例如新建分支dev

git branch dev

那么上述仓库就会变成这样:

网络异常,图片无法展示
|

新分支一般会以当前最新快照为起点建立。

3,切换分支

上述的checkout -b 分支名可以直接新建分支并切换至新分支,当然直接切换分支也很简单:

git checkout 分支名

使用checkout命令即可。

还是上述仓库,切换到dev分支:

网络异常,图片无法展示
|

这样当前分支切换到了dev

接下来我们进行开发并做了一次提交,又会变成什么样呢?如下图:

网络异常,图片无法展示
|

4,融合分支

可以使用下列命令将指定分支融合至当前分支

git merge 指定融合分支

我们在dev分支开发完毕了一个版本,想将其融合到master,那就先切换至master分支再使用merge命令进行融合:

git checkout master
git merge dev

上述仓库融合后如下:

网络异常,图片无法展示
|

假设你的仓库有对应的远程仓库,将dev融合到master之后,还需要将master也推送上去哦!

git push xxx master

xxx表示你的远程仓库别名。

5,查看当前仓库分支

这个就简单了。

查看当前仓库本地分支:

git branch

查看当前仓库远程分支:

git branch -r

查看当前仓库所有分支(本地+远程):

git branch -a

6,将本地分支和远程分支建立追踪关系

我们git clone下来的仓库默认只克隆了其中的master分支。不过要对远程仓库已有的dev分支进行开发怎么办呢?方法其实很多,下面来一一说明。

(1) 克隆时指定分支

git clone命令后面加上-b参数指定分支即可,例如克隆某仓库dev分支:

git clone -b dev 仓库地址

(2) 新建本地分支dev并和远程仓库的dev分支建立追踪关系

例如我刚克隆下来的一个仓库,首先查看所有分支:

git branch -a

网络异常,图片无法展示
|

可见本地只有一个master分支,但是远程分支除了master还有一个dev分支。

通过git branch命令新建本地dev分支并和远程dev分支建立追踪关系:

git branch dev
git branch --set-upstream-to=remotes/origin/dev dev

重点是这个命令将本地分支和远程分支建立追踪关系:

git branch --set-upstream-to=远程分支名 本地分支名

然后再使用checkout命令切换至dev分支即可开始开发,然后git push xxx devdev分支变动提交至远程仓库,xxx更换为自己的仓库别名。

其实还有一个更加简单的方法,使用checkout命令即可新建一个本地分支并切换至新建的分支,同时将这个分支和指定远程分支建立追踪关系:

git checkout -b 本地分支名 远程分支名

例如上述仓库一克隆下来我们其实只要执行这一句:

git checkout -b dev remotes/origin/dev

这个命令会直接实现在本地建立了dev分支并切换上去,并和远程dev分支建立追踪关系,一步到位。

可见git branch --set-upstream-to=命令用于手动建立现有本地分支和远程分支追踪关系,而git checkout -b命令则是新建、切换、追踪一步到位。这两个命令大家视情况使用。

还有一种情况是,本地新建了一个dev分支,但是远程仓库没有这个dev分支,怎么办呢?其实直接把dev分支push上去即可,本地推送的分支若远程仓库中不存在,远程仓库会自动创建

7,删除分支

删除分支其实很简单,不过是很危险的操作,请谨慎使用!

删除本地分支:

git branch -d 分支名

删除远程分支:

git branch -dr 远程分支名


相关文章
|
2月前
|
项目管理 开发工具 git
Git项目管理——分支(三)
Git项目管理——分支(三)
43 2
|
3月前
|
JSON 开发工具 git
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
|
4天前
|
开发工具 git 开发者
|
1天前
|
Shell 开发工具 git
|
17天前
|
JavaScript 测试技术 开发工具
Git 分支设计规范
Git 分支设计规范
55 11
|
7天前
|
开发工具 git
Git——简单的分支规范
Git——简单的分支规范
13 0
|
12天前
|
开发工具 git Windows
git 修改大小写远程分支失败
git 修改大小写远程分支失败
|
26天前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
46 0
|
26天前
|
前端开发 测试技术 开发工具
|
29天前
|
开发工具 git 开发者
git IDEA的分支合并时的冲突问题总结,merge和rebase的区别
冲突的处理需要开发者之间的充分沟通以及对项目历史的细致理解。选择Merge或Rebase取决于具体的工作流程和团队偏好,但最重要的是保持代码库的整洁与一致性。使用IDEA等工具可以提高处理合并冲突的效率,但手动解析冲突和理解操作背后的逻辑仍然是不可或缺的。最终目标是通过有效的版本控制实践,促进项目的顺利进行和团队协作的高效。
98 0