美文网首页
Git 教程(四)--分支原理

Git 教程(四)--分支原理

作者: 2012lc | 来源:发表于2017-09-28 14:42 被阅读0次

前言

Git 教程(一)--Git简介及操作流程
Git 教程(二)--Git文件操作
Git 教程(三)--远程仓库
Git 教程(四)--分支原理
Git 教程(五)--远程分支

分支原理

我们在Git 教程(二)的git log打印当中会看见一共三次提交,并且第三次提交的末尾出现HEAD->master的字符,并且我们使用git reset回退的时候,会发现HEAD->master也跟着指向你回退的那个版本末尾,由此,我们可以推断出Git分支的一个操作流程:

Git分支操作流程.png

其中几次提交就是每次的commit,master是指向提交对象的可变指针,而HEAD是一个比较特殊的指针,指向master这种指针的指针。总的来讲,就是master指向了提交对象,HEAD指向了master这个指针。其中master分支并不是一条特殊的分支,只是master是在git init时默认的一条分支,大家懒得改动而已。

新建分支以及切换分支

git branch + 分支名//新建

git branch.png

末尾的master表示当前分支是哪个分支,mater即是显示当前分支是master分支。


创建分支原理.png

如图:出现了testing这个指针指向了最后一次提交,但是HEAD并没有指向testing,所以当前分支还是master分支。
git checkout +分支名//切换

git checkout.png

末尾的master变成了testing,表示已经从master分支切换到了testing分支。

切换分支原理.png

git checkout -b 分支名//新建并且切换,这里就不多解释了。
当然,在新建过后我我们可以通过git log --oneline --decorate命令查看分支所指的提交对象,会发现指向的对象都是一样的。

分支操作

现在,我们已经切换到了testing分支上,我们可以在tesing分支上对文件进行了一个操作,然后通过git add,git commit进行跟踪提交,

分支操作原理.png

如果对分支进行了一个操作,那么testing指向了第四次提交,但是master依旧停留在第三次提交,也就说如果切换到了master分支,那么文件上面显示的内容就是第三次提交显示的内容而不是第四次提交的内容。使用git log可以很明显的看出。
当我们切换到master并且对master分支进行操作的话原理图就成了这样子:

图片.png

我们可以使用git log --oneline --decorate --graph --all来查看分支情况:

分支情况.png

在图上可以看到,在b60313e的时候分成了两个支线,然后在0933db4进行了一个合并。

分支合并

在分支操作完过后我们得进行一个合并,这样才算是完成了一个完整的项目吧。假设我们要合并到master分支,首先我们切换到master分支,然后使用git merge进行一个合并。

git merge.png 分支合并原理.png

在分支合并的时候我们有可能会遇到冲突,显示冲突的时候会出现<<<<<<< HEAD,=======,>>>>>>>这表示 HEAD所指示的版本(也就是你的 master分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(=======的上半部分),而 iss53分支所指示的版本在 =======的下半部分。为了解决冲突,你必须选择使用由 =======分割的两部分中的一个,或者你也可以自行合并这些内容。


合并冲突图例.png

解决冲突过后add和提交,但是在提交的时候会报错:fatal: cannot do a partial commit during a merge.意思是说在merge过程中不能作部分提交,这个时候使用命令行git commit -i [冲突文件名],就能够成功提交了。

分支删除

我们在合并过后会选择删除掉不需要的分支,不然分支多了不好管理,
分支删除命令行: git branch -d +分支名

git branch -d .png

分支查看

git brach:查看所有分支
git branch -v:查看所有分支最后一次提交对象
git branch --merged:查看合并了的分支
git branch --no-merged:查看未合并的分支
这里就不在贴示例图了,自己自行操作查看,比较简单。

分支应用

一般来讲,我们将master分支作为主分支,主要用于合并其他分支和发布版本,在实际开发中,我们将不同的任务分支出去,并行开发,开发完成过后再合并到主分支并且发布。

小结

这篇完成了本地分支的一个讲解,下篇讲解远程分支,未完待续...

相关文章

  • Git 教程(四)--分支原理

    前言 Git 教程(一)--Git简介及操作流程Git 教程(二)--Git文件操作Git 教程(三)--远程仓库...

  • git 命令

    删除分支命令git分支教程git-flow说明 Git撤销git commit 但是未git push的修改 找到...

  • git的基本操作和回滚操作

    git原理图: 一、基本操作 创建新的分支:git branch (分支名)删除一个分支:git branch -...

  • Git笔记

    Git教程 Git简介 安装Git 创建版本库 版本控制 远程仓库 分支管理 创建与合并分支 简单的命令 查看分支...

  • Git_ 拉取远程分支

    其他分支合并教程:git教程[https://git-scm.com/book/zh/v2/Git-%E5%88%...

  • 工作中用到的git操作

    git rebase git rebase 原理 找到这两个分支(即当前分支 experiment、变基操作的目标...

  • 终端操作GitHub代码以及代码的版本控制(develop/ma

    一.git版本控制原理#### master(主分支), develop(分支),虽然是主分支和分支,却是平级关系...

  • git 的 branch(分支) 命令行 总结

    git分支的原理就不讲了,可以看看Git使用手册3 —— Git 分支(上).本文对分支常用的命令进行了增删查改的...

  • Git学习笔记2

    从零开始学习Git,入门网址廖雪峰Git教程。 分支管理 标签管理

  • GIT开发模型文档整理

    原文推荐: A successful Git branching model 这个文章讲的是Git分支模型的原理及...

网友评论

      本文标题:Git 教程(四)--分支原理

      本文链接:https://www.haomeiwen.com/subject/egwsextx.html