我们在上面看到了git面板的很多选项,想要弄清楚各个选项具体要做什么,常用且常规的git理论知识及操作经验不可少。
先看对git操作的简单分类,如下——
需要强调的是,你需要对上述命令关键词都做了什么事儿、应用于何场景,需要有清晰的把握,一定要结合工作区、暂存区、版本库的三者关系去理解。
结合上面给出的图片,我们可以看到,webstorm中的git工具无非是这些命令行的可视化抽象,我们来看看怎么玩儿好它。
由于IDEA中的Git插件需要依赖本地Git客户端,所以需要进行如下配置:
先来最熟知的右键操作,分为两类:文件夹(或者工程)右键和文件右键,先看看文件夹右键的效果——
文件右键
会发现两者的差异仅仅在于文件右键的视图多了一些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
> 仓库二级导航选项,即相关仓库类的操作
要注意,有些操作是针对某单个文件操作的,每当操作某个文件夹时(或者某个工程时),会以选中的文件的集合为单位展开操作文件,并进行操作。
Branches
显示左右分支,包括本地分支和远程分支
进而对各个分支能够进行更多的操作,如下图所示——
会看到,会把各自提交的变更内容一一列表出来。
要注意,这里不包含本地所进行的更改尚未提交到本地仓库的部分,即没有commit的部分。
OK,branches面板介绍完毕,当然还可以在最右下角同样有branches面板操作入口
继续仓库二级导航
Tag 打tag
Merge Changes 合并操作
Stash Changes stash操作,具体用法可问度娘或者看小迪的git文章
... ...
这里省略剩下的那些操作,关于merge、stash、reset的一些操作细节,需要先懂得这三个命令的相关参数的具体含义,再去操作就很好理解了。
OK,关于右键菜单就介绍到这儿了,可以看到它能做的事儿
1. 非常方便的对对比文件或者文件夹的差异,试图直观明了
2. 方便做常规的add/commit/revert操作等
3. 方便操作版本库的相关管理,如fetch/merge/push/rebase等等
这里也就是工作区的更改与当前版本差异的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功能略相近,请参看后边文章
注意小迪看了官网论坛2020版本的webstorm
已经没有Version Control
了,但基本功能均在。
2020已经集成到local changes
了
可以单独去commit,当然也可以commit和push 一起进行。
可以看出来,这里的Local Changes也就起到了"git status"命令的作用。
选中相应分支,右键,我们看到
我们看到,常规的选项,在上述中已提及过,在此就不在啰嗦,这里的Cherry-Pick
,指的是将选中版本变更的文件内容merge
进当前工作区中,我们会看到,同样会出现冲突的情况
当我们选中merge操作时,看到如下图
虽然机器解决的冲突不是令人很满意,不过你可以再merge result
面板中,直接去解决冲突,直接看到历史版本,比较直观。
解决冲突后,也就让需要再去做add
和commit
操作,至于怎么使用,在上述已提及。
接下来是console面板,它用于记录所有你通过webstorm中git操作的命令
1. 可以随时看到本地变更的文件列表和内容,方便提交及还原
2. 看到所有分支(自己与小伙伴儿的)动态,及对应的变更内容,方便对比文件,方便追查问题
3. 可以reset或者merge任意版本
4. 同样可以看到任意操作的命令行,利于学习git命令行
2020新版
clone项目之后新建分支:ctrl + shift + t New Branch 分支名
(分支一般都从master
上建,具体情况具体分析);如果要clone
的项目在本地已经有了,就在webstorm上打开,ctrl + t
直接OK,在master
更新一下就行(更新出来的文件不用提交);建完分支要本地提交、然后远程提交。
添加注释并提交代码:
将代码推送到远程仓库
点击push按钮推送代码:
确认推送内容:
从远程仓库拉取代码:
确认拉取分支信息:
1. 对比类操作compare
2. 仓库类操作repository
3. 本地操作local changes