webstorm的git操作使用
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暂存区的理解
6. git使用规范流程
9. git book
注:转自https://www.cnblogs.com/jinguangguo/p/4868152.html
webstorm的git操作使用的更多相关文章
- 【原】无脑操作:Webstorm集成Git/Github
Webstorm作为前端开发的主流工具,对Git及Github可以非常简便的集成. 1.开发环境:(如何安装就不说了) ① Webstorm 2018 ② git version 2.20.1 ③ G ...
- Intellij 中的git操作 转!
http://blog.csdn.net/lovesummerforever/article/details/50032937 Git原理以后会分章节介绍,本次主要说一下intellij怎样操作git ...
- 使用Git操作GitHub代码入门教程
GitHub除了网页操作外,还可以借助本地客户端git(或github for windows)来增删修改远程代码.使用Git操作来连接GitHub可以通过Https或SSH方式,使用SSH方式可以免 ...
- 转 git操作小结
UNDER MIT LICENSE. 公司几乎所有的项目都是使用 git 仓库来管理代码,以前对 git 只有些肤浅的了解,每次提交代码或者上线的时候总是会提心吊胆,生怕出现一些未知的问题.经过三个月 ...
- svn 迁移至git操作手册
svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...
- git操作常用命令
一.使用git 1.git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己 ...
- IDEA环境下GIT操作浅析之二-idea下分支操作相关命令
上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...
- IDEA环境下GIT操作浅析之一Idea下仓库初始化与文件提交涉及到的基本命令
目标总括 idea 下通过命令操作文件提交,删除,与更新并推送到github 开源库基本操作idea 下通过命令实现分支的创建与合并操作 idea 下通过图形化方式实现idea 项目版本控制基本操作 ...
- Git操作自动触发企业微信机器人webhook
[本文出自天外归云的博客园] 背景 在git做一些merge或push的操作,我们希望可以自动在企业微信群发送自定义的通知. 服务代码 这里选用php作为网络服务的开发语言,关键的代码如下(githo ...
随机推荐
- Lniux系统-Ubantu安装搜狗输入法
1.在官网下载搜狗输入法的安装包-https://pinyin.sogou.com/linux/?r=pinyin 2.终端打开,进行解压安装--sudo dpkg -i sogoupinyin_2. ...
- mysql 安装(Linux、Ubuntu)
1.检查系统是否已经安装过mysql rpm -qa | grep mysql 若出现类似于以上的结果则表明系统已经安装过mysql,执行以下命令卸载 rpm -e --nodeps mysql-co ...
- JVM GC算法 垃圾回收器
JVM的垃圾回收算法有三种: 1.标记-清除(mark-sweep):啥都不说,直接上图 2.标记-整理(mark-compact) 3.复制(copy) 分代收集算法 ...
- java8-02-再探Lambda表达式
Lambda表达式 主要作用替代匿名内部类 达到简化代码的操作 Lambda表达式 在对象中的使用 Employee类
- python直接赋值、浅拷贝、深拷贝的区别
一:直接赋值 赋值,就是对象的引用,给对象起别名. i = 8j = iprint("值是:",i, "地址:",id(i))print("值是:&q ...
- Nginx与keepalived实现高可用
主keepalived设置 #安装keepalived [root@localhost ~]# yum -y install keepalived #安装nginx [root@localhost ~ ...
- docker /var/lib/docker/aufs/mnt 目录满了怎么清理
1.创建脚本文件 vi cleandocker.sh 内容如下: #!/bin/sh echo "==================== start clean docker contai ...
- ubuntu升级pip报cannot import name 'main'解决方法
执行sudo vi /usr/bin/pip 将代码: from pip import main if __name__ == '__main__': sys.exit(main()) 修改为: fr ...
- .deb文件安装应该怎么做
https://unix.stackexchange.com/questions/159094/how-to-install-a-deb-file-by-dpkg-i-or-by-apt
- Java匹马行天下之学编程的起点——高级语言大锅烩
学编程的起点——高级语言大锅烩 前言: 学知识前总想说点鸡汤,想喝的朋友就看看,不想喝的就直接看干货吧,就当鸡汤是给我自己喝的. 前段时间在网上看了一句话感觉挺触动我的,我做个分享: 如果你觉得你的祖 ...