[转载]Git入门学习

0. 前言

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

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

1. 先说 git 理论

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

image

我们在上面看到了 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 右键菜单

先来最熟知的右键操作,分为两类:文件夹(或者工程)右键和文件右键,先看看文件夹右键的效果——

image

再看看文件右键——

image

会发现两者的差异仅仅在于文件右键的视图多了一些 diff 操作(或者可以联想到 git diff 命令)。我们看看各个选项的含义——

Commit File...  提交至本地版本库

Add  添加进缓存区

Show Current Revision  显示当前文件的最新版本信息,如下图——

image

Compare with the Same Repository Version  与当前版本(的文件)做比较,可以理解为与最新版本比较,也就是可以比较本地工作区和本地版本库的差异(也记住,比较视图中,右侧永远是最新的那个版本内容)——

image

Compare with Latest Repository Version  与上一版本(的文件)做比较,可以理解为当前版本与本地工作区所做的更改共同来与上一版本比较

Compare with...  与任意历史版本(的文件)做比较

image

Compare with Branch...  与任意分支(的文件)做比较,包括本地分支及远程分支

image

Show History  展示关联本文件(或者文件夹中的所有文件)提交信息历史,我们可以看到,历史提交信息面板出现于下方 Version Control 面板中——

image

Show History for Selection  对指定的代码块,显示历史版本信息

image

(连接第二个图)-------->>>>>>

image

Revert...  还原代码,要注意与 reset 的区分,这里仅仅是将本地工作区的代码还原为本地仓库中的最新版本的代码

image

Repository >  仓库二级导航选项,即相关仓库类的操作

要注意,有些操作是针对某单个文件操作的,每当操作某个文件夹时(或者某个工程时),会以选中的文件的集合为单位展开操作文件,并进行操作。

我们继续看看 Respository 的二级导航——

image

Branches  显示左右分支,包括本地分支和远程分支

image

进而对各个分支能够进行更多的操作,如下图所示——

image

或者
image
  • checkout  检出至本地工作区,此时本地已经检出过
  • checkout as new local branch  检出至本地工作区,并创建新分支
  • compare   两个分支进行比较,比如,我想拿当前的 test 分支与本地的 master 分支进行比较,会看到——
image

会看到,会把各自提交的变更内容一一列表出来。要注意,这里不包含本地所进行的更改尚未提交到本地仓库的部分,即没有 commit 的部分。

  • merge   进行合并操作,以比较版本合入当前版本中,merge 的过程当中,可能会有冲突(要记住,多人修改同一处代码时,才可出现冲突),稍候介绍怎么处理冲突
  • delete   删除当前分支

OK,branches 面板介绍完毕,当然还可以在最右下角同样有 branches 面板操作入口,如下——

image

继续介绍,仓库二级导航——

image
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

image

这里也就是工作区的更改与当前版本差异的 diff 文件列表,Unversioned Files 也就是代表没有加入到版本管理的文件列表,需要进行 add 操作,添加进缓存区中;Default 中的文件是代表版本管理中经过本地更改的文件,需要进行 add 和 commit 操作,将更改的文件添加入缓存区中并提交到本地版本库中。要知晓 git add 和 git commit 做了什么事儿

git add:暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID 被记录在暂存区的文件索引中。
git commit:暂存区的目录树写到版本库(对象库)中,对应的分支会做相应的更新。即HEAD指向的目录树就是提交时暂存区的目录树

可以对新增的文件进行 add 操作,如下——

image
Revert:同上述讲述,即还原本地变更

Move to Another Changelist:转入其他变更标记,分门别类,好管理

Show Diff:同上述讲述

Jump to Source:直接打开变更源文件

Ignore:加入.gitnore文件中

Create Patch:打变更补丁

Shelve Changes:与stash功能略相近,请参看后边文章

紧接着,我们最常用的操作就是 Commit Changes 了——

image

可以单独去 commit,当然也可以 commit 和 push 一起进行。

可以看出来,这里的 Local Changes 也就起到了 "git status" 命令的作用。

OK,继续介绍 log 面板——

image

选中相应分支,右键,我们看到——

image

我们看到,常规的选项,在上述中已提及过,在此就不在啰嗦,这里的 Cherry-Pick,指的是将选中版本变更的文件内容 merge 进当前工作区中,我们会看到,同样会出现冲突的情况——

image

当我们选中 merge 操作时,看到如下图——

image

虽然机器解决的冲突不是令人很满意,不过你可以再 merge result 面板中,直接去解决冲突,直接看到历史版本,比较直观。

解决冲突后,也就让需要再去做 add 和 commit 操作,至于怎么使用,在上述已提及。

image

接下来是 console 面板,它用于记录所有你通过 webstorm 中 git 操作的命令,如下——

image

看一看到,这里的命令行,也就是常规的我们熟知的命令行。

Version Control 面板介绍到这儿。可以看到,我们使用 Version Control 面板,我们可以做的事儿——

1. 可以随时看到本地变更的文件列表和内容,方便提交及还原 
2. 看到所有分支(自己与小伙伴儿的)动态,及对应的变更内容,方便对比文件,方便追查问题
3. 可以reset或者merge任意版本
4. 同样可以看到任意操作的命令行,利于学习git命令行

【转载链接】:https://www.cnblogs.com/jinguangguo/p/4868152.html

!!仅供学习,若有侵权,立刻删除

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • 安装Git Git的下载地址:Git官网下载地址 Git本地仓库和命令 配置用户 下载完Git后,右键会有一个Gi...
    TokyoZ阅读 4,494评论 1 7
  • 第一部分是文档,为了日后查看方便放到了前边[可能敲错了,详见阮一峰老师的文章]http://www.ruanyif...
    白璞1024阅读 1,018评论 0 49
  • PS:小白的入门笔记,希望能有用,主要参考廖君Git教程 操作环境说明: github仓库 https://git...
    呆呆的张先生阅读 591评论 3 2
  • git 使用笔记 git原理: 文件(blob)对象,树(tree)对象,提交(commit)对象 tree对象 ...
    神刀阅读 3,763评论 0 10
  • 这篇博文是自己在学习git过程中的思考总结。本文仅仅代表个人的看法,如有不妥地方还请本文文末留言。 😊 原文链接g...
    Ming_Hu阅读 1,060评论 4 18