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

前言

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分支作为主分支,主要用于合并其他分支和发布版本,在实际开发中,我们将不同的任务分支出去,并行开发,开发完成过后再合并到主分支并且发布。

小结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容