0. 前言html
在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操做git。node
对于git的使用,你们的使用方式均有不一样,最王道的方式非命令行莫属,基于git的GUI软件仍是不少的,你们可自行研究使用。以前使用eclipse svn插件去操做版本管理,仍是很便捷的一件事情。而今用惯了webstorm,固然里面也集成了对svn的支持,只是最近一直在用git,因此想试着用webstorm中的git集成工具进行版本管理。固然以前都是以敲命令行的方式去作,达到一个熟练度,速度仍是很可观的。经过这篇文章,主要讲述如何使用webstorm中的git工具进行更加快速高效的版本管理。git
1. 先说git理论web
webstorm提供了git很多试图,下面列举其一:缓存
咱们在上面看到了git面板的不少选项,想要弄清楚各个选项具体要作什么,经常使用且常规的git理论知识及操做经验不可少。eclipse
咱们先看对git操做的简单分类,以下——webstorm
- 远程仓库类:git clone/remote/pull/push/rebase/fetch
- 分支类(包括tag):git branch/tag/checkout/stash
- 信息查阅:git status/log/diff
- 本地常规操做:git add/commit/rm/merge/reset
这里仅仅是我我的的分类方式,每一个人都对它有不一样的分类,欢迎补充。ide
须要强调的是,你须要对上述命令关键词都作了什么事儿、应用于何场景,须要有清晰的把握,若是你不知,不放看看文章末尾的参考文章。多说一句,必定要结合工做区、暂存区、版本库的三者关系去理解。svn
结合上面给出的图片,咱们能够看到,webstorm中的git工具无非是这些命令行的可视化抽象,咱们来看看怎么玩儿好它。工具
2. 使用webstorm中的git
2.1 右键菜单
先来最熟知的右键操做,分为两类:文件夹(或者工程)右键和文件右键,先看看文件夹右键的效果——
再看看文件右键——
会发现二者的差别仅仅在于文件右键的视图多了一些diff操做(或者能够联想到git diff命令)。咱们看看各个选项的含义——
Commit File... 提交至本地版本库
Add 添加进缓存区
Show Current Revision 显示当前文件的最新版本信息,以下图——
Compare with the Same Repository Version 与当前版本(的文件)作比较,能够理解为与最新版本比较,也就是能够比较本地工做区和本地版本库的差别(也记住,比较视图中,右侧永远是最新的那个版本内容)——
Compare with Latest Repository Version 与上一版本(的文件)作比较,能够理解为当前版本与本地工做区所作的更改共同来与上一版本比较
Compare with... 与任意历史版本(的文件)作比较
Compare with Branch... 与任意分支(的文件)作比较,包括本地分支及远程分支
Show History 展现关联本文件(或者文件夹中的全部文件)提交信息历史,咱们能够看到,历史提交信息面板出现于下方Version Control面板中——
Show History for Selection 对指定的代码块,显示历史版本信息
(链接第二个图)-------->>>>>>
Revert... 还原代码,要注意与reset的区分,这里仅仅是将本地工做区的代码还原为本地仓库中的最新版本的代码
Repository > 仓库二级导航选项,即相关仓库类的操做
要注意,有些操做是针对某单个文件操做的,每当操做某个文件夹时(或者某个工程时),会以选中的文件的集合为单位展开操做文件,并进行操做。
咱们继续看看Respository的二级导航——
Branches 显示左右分支,包括本地分支和远程分支
进而对各个分支可以进行更多的操做,以下图所示——
或者
- checkout 检出至本地工做区,此时本地已经检出过
- checkout as new local branch 检出至本地工做区,并建立新分支
- compare 两个分支进行比较,好比,我想拿当前的test分支与本地的master分支进行比较,会看到——
会看到,会把各自提交的变动内容一一列表出来。要注意,这里不包含本地所进行的更改还没有提交到本地仓库的部分,即没有commit的部分。
- merge 进行合并操做,以比较版本合入当前版本中,merge的过程中,可能会有冲突(要记住,多人修改同一处代码时,才可出现冲突),稍候介绍怎么处理冲突
- delete 删除当前分支
OK,branches面板介绍完毕,固然还能够在最右下角一样有branches面板操做入口,以下——
继续介绍,仓库二级导航——
Tag 打tag Merge Changes 合并操做 Stash Changes stash操做,具体用法,你若不知,能够参考一下下面的文章 ... ...
这里省略剩下的那些操做,关于merge、stash、reset的一些操做细节,须要先懂得这三个命令的相关参数的具体含义,再去操做就很好理解了。
OK,关于右键菜单就介绍到这儿了,能够看到它能作的事儿——
1. 很是方便的对对比文件或者文件夹的差别,试图直观明了 2. 方便作常规的add/commit/revert操做等 3. 方便操做版本库的相关管理,如fetch/merge/push/rebase等等
2.1 Version Control面板
OK,接下来,介绍一下Version Control面板——
首先,来介绍对应Local Changes
这里也就是工做区的更改与当前版本差别的diff文件列表,Unversioned Files也就是表明没有加入到版本管理的文件列表,须要进行add操做,添加进缓存区中;Default中的文件是表明版本管理中通过本地更改的文件,须要进行add 和commit操做,将更改的文件添加入缓存区中并提交到本地版本库中。要知晓git add和git commit作了什么事儿
git add:暂存区的目录树被更新,同时工做区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID 被记录在暂存区的文件索引中。 git commit:暂存区的目录树写到版本库(对象库)中,对应的分支会作相应的更新。即HEAD指向的目录树就是提交时暂存区的目录树
能够对新增的文件进行add 操做,以下——
其他选项——
Revert:同上述讲述,即还本来地变动 Move to Another Changelist:转入其余变动标记,分门别类,好管理 Show Diff:同上述讲述 Jump to Source:直接打开变动源文件 Ignore:加入.gitnore文件中 Create Patch:打变动补丁 Shelve Changes:与stash功能略相近,请参看后边文章
紧接着,咱们最经常使用的操做就是Commit Changes了——
能够单独去commit,固然也能够commit和push 一块儿进行。
能够看出来,这里的Local Changes也就起到了"git status"命令的做用。
OK,继续介绍log面板——
选中相应分支,右键,咱们看到——
咱们看到,常规的选项,在上述中已说起过,在此就不在啰嗦,这里的Cherry-Pick,指的是将选中版本变动的文件内容merge进当前工做区中,咱们会看到,一样会出现冲突的状况——
当咱们选中merge操做时,看到以下图——
虽然机器解决的冲突不是使人很满意,不过你能够再merge result面板中,直接去解决冲突,直接看到历史版本,比较直观。
解决冲突后,也就让须要再去作add和commit操做,至于怎么使用,在上述已说起。
接下来是console面板,它用于记录全部你经过webstorm中git操做的命令,以下——
看一看到,这里的命令行,也就是常规的咱们熟知的命令行。
Version Control面板介绍到这儿。能够看到,咱们使用Version Control面板,咱们能够作的事儿——
1. 能够随时看到本地变动的文件列表和内容,方便提交及还原 2. 看到全部分支(本身与小伙伴儿的)动态,及对应的变动内容,方便对比文件,方便追查问题 3. 能够reset或者merge任意版本 4. 一样能够看到任意操做的命令行,利于学习git命令行
3. 优点
总体而言,我的以为webstorm操做git起来,仍是很方便,大体分红三类——
1. 对比类操做compare 2. 仓库类操做repository 3. 本地操做local changes
我的以为也是一个很是不错的学习脉络,总体来看,其最大的优点仍是在清晰明了的视图上。
4. 总结
至此,对webstorm如何操做git的介绍就介绍完毕,我在这儿,举一个最常规的git操做场景,你们能够回顾着操做试试——
常规合做开发(同一分支开发 / 不一样分支开发): add and commit --> fetch —> compare —> merge (and resolve conflicts) —> push
从接触git,到使用git命令行,到理解git常规工做原理,再到深刻使用webstorm操做git,总体而言,须要作到——
1. 要熟知git经常使用的理论知识 2. 要熟悉命令行,若是你脱离了webstorm这样的IDE,一样可以进行git版本管理 3. 好好利用IDE带来的视图清晰这一个优点,更快的查询问题、解决问题
OK,至此,webstorm的研究暂时告一段落,最近搞搞其余的技术研究......
参考:
0. jetbrains对Version Control的介绍
1. git暂存区的理解
6. git使用规范流程
9. git book