0. 前言

在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git。

对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于git的GUI软件还是很多的,大家可自行研究使用。之前使用eclipse svn插件去操作版本管理,还是很便捷的一件事情。而今用惯了webstorm,当然里面也集成了对svn的支持,只是最近一直在用git,所以想试着用webstorm中的git集成工具进行版本管理。当然之前都是以敲命令行的方式去做,达到一个熟练度,速度还是很可观的。通过这篇文章,主要讲述如何使用webstorm中的git工具进行更加快速高效的版本管理。

1. 先说git理论

webstorm提供了git不少试图,下面列举其一:

我们在上面看到了git面板的很多选项,想要弄清楚各个选项具体要做什么,常用且常规的git理论知识及操作经验不可少。

我们先看对git操作的简单分类,如下——

  • 远程仓库类:git clone/remote/pull/push/rebase/fetch
  • 分支类(包括tag):git branch/tag/checkout/stash
  • 信息查阅:git status/log/diff
  • 本地常规操作:git add/commit/rm/merge/reset

这里仅仅是我个人的分类方式,每个人都对它有不同的分类,欢迎补充。

需要强调的是,你需要对上述命令关键词都做了什么事儿、应用于何场景,需要有清晰的把握,如果你不知,不放看看文章末尾的参考文章。多说一句,一定要结合工作区、暂存区、版本库的三者关系去理解。

结合上面给出的图片,我们可以看到,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暂存区的理解

2. Git学习笔记03--git reset

3. Git merge 合并分区详解

4. git少用pull多用fetch和merge

5.总结自己的Git常用命令

6. git使用规范流程

7. git rebase小计(转)

8. Git merge 合并分区详解

9. git book

使用webstorm操作git的更多相关文章

  1. 如何使用webstorm去操作git

    0. 前言 在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git. 对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于 ...

  2. webstorm的git操作使用

    0. 前言 在上一篇文章中,讲述了使用webstorm去调试node程序,最近研究了一下如何使用webstorm去操作git. 对于git的使用,大家的使用方式均有不同,最王道的方式非命令行莫属,基于 ...

  3. 【原】无脑操作:Webstorm集成Git/Github

    Webstorm作为前端开发的主流工具,对Git及Github可以非常简便的集成. 1.开发环境:(如何安装就不说了) ① Webstorm 2018 ② git version 2.20.1 ③ G ...

  4. Phpstrom操作git

    1.PHPstrom操作git[上传] 2.提交代码到仓库 2. 3.使用git bash上传代码仓库的代码到远程服务器 代开git bash进入到项目所在的目录,输入命令$  git push .上 ...

  5. python操作git

    GitPython 是一个用于操作 Git 版本库的 python 包,它提供了一系列的对象模型(库 - Repo.树 - Tree.提交 - Commit等),用于操作版本库中的相应对象. 模块安装 ...

  6. java操作git简单实现

    记录瞬间 import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.ListBranchCommand; import org.ecli ...

  7. Git误操作 git reset强制回滚 恢复commit方法

    参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...

  8. Git 学习(三)本地仓库操作——git add & commit

    Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...

  9. 使用 Python 操作 Git 版本库 - GitPython

    GitPython 是一个用于操作 Git 版本库的 python 包, 它提供了一系列的对象模型(库 - Repo.树 - Tree.提交 - Commit等) 用于操作版本库中的相应对象. 版本库 ...

随机推荐

  1. HDU #5507 GT and Strings

    这是AC自动机系列的第一篇 传送门 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Othe ...

  2. Git Pull 避免用户名和密码方法

    在开发中使用的版本控制器时git , 每次使用命令"git pull"从服务器获得最新代码时,都需要输入用户名和密码,这样浪费了大量的时间和热情,在此背景下,本文在网上找到解决版本 ...

  3. eclipse错误:Unable to read workbench state. Workbench UI layout will be reset.XML document structures

    Unable to read workbench state. Workbench UI layout will be reset.XML document structures must start ...

  4. TCP的那些事儿(上)

    TCP的那些事儿(上) 原文链接:http://coolshell.cn/articles/11564.html TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面. ...

  5. 找出现有Vector或ArrayList或数组中重复的元素&给现有Vector或ArrayList或数组去重

    //直接上代码: public static void main(String[] args) { List<Integer> list = new Vector<Integer&g ...

  6. MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)

    MD5 编辑 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321( ...

  7. C++ 中map 中迭代器的简单使用:

    public member function <map> std::map::find iterator find (const key_type& k); const_itera ...

  8. JavaScript简易缩放程序

    一.前言: 上一篇随笔中已经把拖动程序完成了,这篇主要把缩放程序完成,后面合并后可以做成一个图片裁剪的功能 简易缩放程序DEMO:http://jsfiddle.net/UN99R/ 限制缩放程序DE ...

  9. java笔记--使用线程池优化多线程编程

    使用线程池优化多线程编程 认识线程池 在Java中,所有的对象都是需要通过new操作符来创建的,如果创建大量短生命周期的对象,将会使得整个程序的性能非常的低下.这种时候就需要用到了池的技术,比如数据库 ...

  10. 第16章 使用Squid部署代理缓存服务

    章节概述: 本章节从代理缓存服务的工作原理开始讲起,让读者能够清晰理解正向代理(普通模式.透明模式)与反向代理的作用. 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低 ...