赞
踩
下面我们来说说Git的分支。
打开Eclipse,点击右上角红圈位置,找到里面的Git选项,双击打开。
之后会出现这样的界面,
这个面板是Egit的重要页面(我们姑且叫它主界面),
很多操作我们都需要在这里进行。(前面已经说过了)
我们一点一点说明。
第一个红圈Branches就是分支。
其中local就是本地分支,Remote Tracking就是远程分支。
引用廖雪峰前辈的分支介绍:
分支就是科幻电影里面的平行宇宙,
当你正在电脑前努力学习Git的时候,
另一个你正在另一个平行宇宙里努力学习SVN。
你创建了一个属于你自己的分支,
别人看不到,
还继续在原来的分支上正常工作,
而你在自己的分支上干活,
想提交就提交,
直到开发完毕后,
再一次性合并到原来的分支上,
这样,
既安全,
又不影响别人工作。
(是不是很有散文风格?)
我们如何新建一条分支呢?
我们在master分支上按右键(新的分支是基于master的),
选择Switch to -> new Branch…。
然后在新出现的对话框输入分支名字(这里我起名为dev),
然后确定就完成了一个分支的创建。
现在分支是这样的。
其中dev分支的前面有个对号,说明当前我们就在这条分支上工作。
现在我们所有的操作都不会对master(主分支)造成任何影响。
我们来测试一下。
试着对程序做一些改动,然后add to index(添加到缓存区),
再然后commit(提交到本地仓库)。
我们发现dev分支后面的版本号(cc9c72d)以及注释(增加了一句话)发生了变化,
而master则没有发生变化。
我们尝试切换回master分支,看看有没有影响。
我们在master分支上按右键,然后选择checkout。回到项目中,看看我们刚才的操作。
是不是又回到开始的状态了?
这就是分支的效果,在实际项目中我们经常有这样的情况:主分支功能都是经过运行测试的,
现在我们有一些新的功能要增加,而直接在主分支上操作可能会有意外发生。
这时我们就可以在本地新建一条分支,在新的分支上我们可以随便做更改,直到程序正常运行。
程序正常运行之后就要将新创建的分支(dev)和主分支(master)合并了。
首先切换到主分支(master),然后在新建分支(dev)处右键选择merge,提示框选择确定。
这样就完成了将新建分支合并到主分支的操作(注意从哪里合并到哪里要搞清楚)。
如果主分支和新建分支都做了修改,而且操作的可能是同一位置,那么会出现什么情况呢?
我们回滚到之前的版本,就是没有合并分支的时间点。
在主分支上做一些修改。之后将主分支add to index然后commit。
这时可以来回切换分支看看是否有不同。
现在切换回主分支,在新建分支处右键选择merge(合并)。弹出窗口点击确定。
我们发现这时候出现了冲突(和SVN的冲突很像)。
HEAD下面代码的就是我们合并之前的样子(合并之前是处于主分支的,不要乱了),
下面会给出合并分支的名字(…/dev)。中间用====分割。
这样我们很容易就会找到冲突的位置,并且解决它。
假设我们修改好了代码之后是这样的,也就是把提示的信息都删掉了,然后保存它。
之后我们的项目会变成这个样子。其中红色表示冲突的文件。将冲突文件add to index,
然后将项目commit。会出现下面的提示。
Egit已经帮我们写好了解决冲突后提交的注释,如果需要可以更改,然后确定提交。
如果我们觉得新的分支已经不需要了,那么请切换至主分支,
然后在新建分支处按右键选择Delete Branch(删除分支)。
这里注意,不能删除当前所在的分支。比如你处于dev分支处,就不能删除dev分支。
你可以先切换(checkout)到其它分支,然后再删除它。
接下来说说bug 分支。再次引用L大大的Bug分支说明:
当你接到一个修复一个代号101的bug的任务时,
很自然地,
你想创建一个分支issue-101来修复它,
但是,
等等,
当前正在dev上进行的工作还没有提交
并不是你不想提交,
而是工作只进行到一半,
还没法提交,
预计完成还需1天时间。
但是,必须在两个小时内修复该bug,怎么办?
幸好,Git还提供了一个stash功能,
可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
我们在master分支做一些修改。这时候还没有提交,Bug来了。
这时候我们只要在项目上按右键,选择Team->Stashes->Stash Changes,
然后在新出现的对话框中输入一个名字,然后确定
这里我就起名叫stash001。
确定之后我们会发现刚刚修改还未提交的代码都不见了。
也就是说目前的分支状态是处于原始的,也就是没有任何修改的状态。
不用担心,刚刚修改的东西都不会丢失。我们打开Git主界面Git Repositories。
我们会发现References子项里面多了一个refs/stash选项,后面有标记id和名称stash001。
这时候我们就可以放心的解决Bug了。
当操作完成后我们切换回原来的分支,然后在项目上按右键,
选择Team->Stashes->stash001(下面那几个是我做测试生成的)。
然后会出现这样的界面。这个界面告诉我们之前我们都做了哪些修改,
Unstaged Changes里面的类就是修改过的类,可以双击查看。
现在点击右上角红圈位置的图标,我们就会发现,刚才的状态都回来了。
(未完待续)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。