分支的作用
众所周知,git可以允许我们在本地仓库建很多个分支来满足我们的开发需求。比如你正在写一个版本的需求,这时候又突然让你修改一个bug,且bug需要优先于版本需求提交。如果在写了一半的代码之上再修改bug,提交bug修复代码的时候我们要小心的将修改bug的代码和版本需求的代码分开提交,如果两部分代码耦合比较紧密的话,这是一个很考验细心程度的工作,一不小心就会提交错代码。
类似于上面的情况,我们可以通过下面的流程来解决:
1.首先我们在开发版本需求的时候首先新建一个本地分支,取名为dev。版本需求的代码修改全部提交到这个dev分支上。
2.当有紧急bug的时候,我们可以选择再新建一个本地分支,取名为bug。切换到bug分支去修改bug。
3.当bug修改完之后,我们把bug分支的代码推送到远端
4.版本需求完成后,再将dev分支的代码推送到远端
通过上面的4个步骤就可以将上面的坑爹问题解决了!
具体的分支操作
ps:讲具体分支操作之前我们需要先将远程的项目拉取下来并且在idea中打开
选中GIT之后会弹出下面的窗口:
URL填写远端项目的URL。
Directory填写你要把这个项目从远端拉下来之后存放的路径,比如这里的F:\idea_project_test\Template_Demo,项目拉下来之后会存放在这个目录下面,如果这个目录不存在,idea会自动帮你创建。
项目拉取结束之后会提示你:
选择new Window之后会在一个新的idea页面中打开这个项目
到此项目拉取结束!
我们看一下刚刚拉取下来的项目的分支结构
图中标号为1的框中展示的是当前分支,这里表示我现在是在master分支上(这个master分支指的是本地的master分支),我在idea中看到的代码都是本地master分支的代码
图中标号为2的框中展示的是远程分支,我这个项目在远端有三个分支master,dev,release,origin指的是仓库名(仓库名没有特别指定默认就叫origin)。这个黄色的小星代表的是,当前的分支是与远程的哪一个分支关联
这里代表我当前的这个本地master分支是与远程的master分支关联的。
图中标号为3的框中展示的是本地分支,因为我项目刚刚拉下来,本地只有一个默认生成的maste分支。这个代表我当前所处的分支就是这个master分支。
这个表明这个本地分支关联的远程分支。
1.创建本地分支来开发正常版本迭代的代码
点击new Branch来新建一个本地分支,会弹出下面的框
输入你要新建的本地分支的名字就可以新建一个本地分支了(名字你可以随便定义),checkout branch如果勾选上就会在新建分支之后将你idea中的代码切换到你新建的这个分支的代码,如果不勾选你就仅仅是建了一个本地分支,其他无事发生。
我们这边创建一个名字叫branch1的分支并且勾选checkout branch,创建完之后自动切换到我们创建的这个分支,界面如下:
我们发现,这个新建的分支和之前的master分支的内容一模一样,不要慌,就是这样。用上面的方式创建本地分支原理就是新建一个指针,将指针指向当前head版本。
不懂?看下面的解释:
我们在没创建分支前,本地只有一个master分支,这时候版本的轨迹是这样的
圆圈代表一个个的版本,而箭头代表指针,现在master指向最后一个版本,head指向master。
当我们新建一个分支之后,就变成了这样:
master和新建的dev分支都指向最后一个版本,并且head指向了dev(head是指当前我们所处的分支,图中话的是指向dev,但是我们可以指向任何地方,因为我们可以随时切换分支,这里主要还是关注dev和master都指向最后一个版本)。
当我们创建完分支dev并且在dev开发并且commit之后,轨迹会变成这样:
可以看到多出了一个小圆圈,并且dev指向了这个多出的小圆圈。从此dev和master就不再有关联了,变成了两个独立开发的分支。
好回到正题,现在我们已经新建出来了一个本地分支。但是还有一点要说明,点击new branch创建的分支
是将指针指向了当前head指向的版本,这是一个本地的概念,也就是说我们新建的分支仅仅是一个本地的分支,并没有与远程分支关联。即时之前的本地master分支是与远程master关联的,我们新建的分支branch1指向本地master分支,那branch1也是没有与远程master关联的。
如果你想创建一个本地分支并且想让你创建出来的本地分支可以自动关联远程分支,可以这样做:
选择一个远程分支,然后点击checkout as ,然后会弹出这个框
输入想创建的本地分支名即可,这样是将新建分支的指针指向了远程master分支指针指向的本地仓库版本(有点绕),并且这样创建之后的本地分支会自动与远程的分支关联。
好了创建分支就介绍完了,剩下的请看下面的文章