当前位置:   article > 正文

Git在Eclipse上的应用--Egit插件--(三)_eclipse stashes

eclipse stashes

分支

前言

下面我们来说说Git的分支。
  • 1

这里写图片描述

打开Eclipse,点击右上角红圈位置,找到里面的Git选项,双击打开。
  • 1

这里写图片描述

之后会出现这样的界面,
这个面板是Egit的重要页面(我们姑且叫它主界面),
很多操作我们都需要在这里进行。(前面已经说过了)

我们一点一点说明。

第一个红圈Branches就是分支。
其中local就是本地分支,Remote Tracking就是远程分支。

引用廖雪峰前辈的分支介绍: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

分支就是科幻电影里面的平行宇宙,
当你正在电脑前努力学习Git的时候,
另一个你正在另一个平行宇宙里努力学习SVN。
你创建了一个属于你自己的分支,
别人看不到,
还继续在原来的分支上正常工作,
而你在自己的分支上干活,
想提交就提交,
直到开发完毕后,
再一次性合并到原来的分支上,
这样,
既安全,
又不影响别人工作。
(是不是很有散文风格?)

创建分支

我们如何新建一条分支呢?

我们在master分支上按右键(新的分支是基于master的),
选择Switch to -> new Branch…。

然后在新出现的对话框输入分支名字(这里我起名为dev),
然后确定就完成了一个分支的创建。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

切换分支

这里写图片描述

现在分支是这样的。

其中dev分支的前面有个对号,说明当前我们就在这条分支上工作。

现在我们所有的操作都不会对master(主分支)造成任何影响。
我们来测试一下。

试着对程序做一些改动,然后add to index(添加到缓存区),
再然后commit(提交到本地仓库)。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里写图片描述

我们发现dev分支后面的版本号(cc9c72d)以及注释(增加了一句话)发生了变化,
而master则没有发生变化。
我们尝试切换回master分支,看看有没有影响。
  • 1
  • 2
  • 3

这里写图片描述

我们在master分支上按右键,然后选择checkout。回到项目中,看看我们刚才的操作。
是不是又回到开始的状态了?

这就是分支的效果,在实际项目中我们经常有这样的情况:主分支功能都是经过运行测试的,
现在我们有一些新的功能要增加,而直接在主分支上操作可能会有意外发生。

这时我们就可以在本地新建一条分支,在新的分支上我们可以随便做更改,直到程序正常运行。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

合并分支

程序正常运行之后就要将新创建的分支(dev)和主分支(master)合并了。
  • 1

这里写图片描述

首先切换到主分支(master),然后在新建分支(dev)处右键选择merge,提示框选择确定。
这样就完成了将新建分支合并到主分支的操作(注意从哪里合并到哪里要搞清楚)。
  • 1
  • 2

解决冲突

如果主分支和新建分支都做了修改,而且操作的可能是同一位置,那么会出现什么情况呢?

我们回滚到之前的版本,就是没有合并分支的时间点。

在主分支上做一些修改。之后将主分支add to index然后commit。

这时可以来回切换分支看看是否有不同。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里写图片描述

现在切换回主分支,在新建分支处右键选择merge(合并)。弹出窗口点击确定。
  • 1

这里写图片描述

我们发现这时候出现了冲突(和SVN的冲突很像)。

HEAD下面代码的就是我们合并之前的样子(合并之前是处于主分支的,不要乱了),
下面会给出合并分支的名字(…/dev)。中间用====分割。
这样我们很容易就会找到冲突的位置,并且解决它。
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

假设我们修改好了代码之后是这样的,也就是把提示的信息都删掉了,然后保存它。
  • 1

这里写图片描述

之后我们的项目会变成这个样子。其中红色表示冲突的文件。将冲突文件add to index,
然后将项目commit。会出现下面的提示。

Egit已经帮我们写好了解决冲突后提交的注释,如果需要可以更改,然后确定提交。
  • 1
  • 2
  • 3
  • 4

这里写图片描述

删除分支

如果我们觉得新的分支已经不需要了,那么请切换至主分支,
然后在新建分支处按右键选择Delete Branch(删除分支)。

这里注意,不能删除当前所在的分支。比如你处于dev分支处,就不能删除dev分支。
你可以先切换(checkout)到其它分支,然后再删除它。
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

Bug分支

接下来说说bug 分支。再次引用L大大的Bug分支说明:
  • 1

当你接到一个修复一个代号101的bug的任务时,
很自然地,
你想创建一个分支issue-101来修复它,
但是,
等等,
当前正在dev上进行的工作还没有提交
并不是你不想提交,
而是工作只进行到一半,
还没法提交,
预计完成还需1天时间。
但是,必须在两个小时内修复该bug,怎么办?
幸好,Git还提供了一个stash功能,
可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

这里写图片描述

我们在master分支做一些修改。这时候还没有提交,Bug来了。

这时候我们只要在项目上按右键,选择Team->Stashes->Stash Changes,
  • 1
  • 2
  • 3

这里写图片描述

然后在新出现的对话框中输入一个名字,然后确定
这里我就起名叫stash001。


确定之后我们会发现刚刚修改还未提交的代码都不见了。 
也就是说目前的分支状态是处于原始的,也就是没有任何修改的状态。

不用担心,刚刚修改的东西都不会丢失。我们打开Git主界面Git Repositories。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里写图片描述

我们会发现References子项里面多了一个refs/stash选项,后面有标记id和名称stash001。

这时候我们就可以放心的解决Bug了。
当操作完成后我们切换回原来的分支,然后在项目上按右键,
选择Team->Stashes->stash001(下面那几个是我做测试生成的)。
  • 1
  • 2
  • 3
  • 4
  • 5

这里写图片描述

然后会出现这样的界面。这个界面告诉我们之前我们都做了哪些修改,
Unstaged Changes里面的类就是修改过的类,可以双击查看。
  • 1
  • 2

这里写图片描述

现在点击右上角红圈位置的图标,我们就会发现,刚才的状态都回来了。
  • 1

(未完待续)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/248978
推荐阅读
相关标签
  

闽ICP备14008679号