Select Page

IntelliJ IDEA 的 Github应用总体介绍

与Git无关的项目

不会是一个全球化的好项目。


一、相关英文术语介绍

本部分所有名词介绍来源于IntelliJ的官方英文帮助,非是针对Github的直接解释,即是这个IDE菜单栏内的菜单名称解释,当然大部分释义IntelliJ和Github是保持一致的,因此这个说明也可以作为Github的新手教学观看。IDE和Github的有机结合能够大大提高程序员的工作效率,个人认为这也是目前大部分学校教学选择性的省略部分,但这对后续的学习是十分重要且有促进作用的。详细的关于git的中文理解,欢迎点击以下链接:学习链接,并可以在该网页上下载相关学习电子书。我们本文介绍的主要是前面的应用点概要总结和第十章在IntelliJ IDEA上的应用与结合。在稍后的文章中,会更详细讲到对Git的理解和对下面术语的命令和体会。关于Git 和Github的区别和联系,大家可以从第一个单词的维基网站上详细了解:

VCS

Version Control System版本控制系统,VCS是缩写。常说的git是常用版本控制软件的内核,因此现在不需要太准确的时候也拿来做VCS的替代使用,原用于linux开发使用,2005年来源于开发者,想详细了解可以点击维基网站:

林纳斯·托瓦兹

该人物极具有自嘲精神,Git的名字来源也来自于此,他的特点一是分布式版本库,不需要服务器端软件,另外就是他的出色的merge tracing能力:

I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.

相关资料来自于https://zh.wikipedia.org/wiki/Git

repository

直接意为知识库,其实形象的说就是每个代码库,即每个项目

Github网站代码库图示
Github网站代码库图示

Local repository

直译为本地代码库,即在本机上编程所涉及的代码,个人也可以理解为本机上的工程Project本身。

Remote repository

远程代码库,我们本文主要讨论的就是这个部分,即如何运用IntelliJ 这个IDE平台来直接远程对Github上的代码库进行操作。

Clone

官方的英文释义check out a project from a remote host,中文直译也很好理解,克隆,就是直接原样搬过来吗,注意,仅仅指把别人的挪到自己的这里。

关于几个工作阶段的图形化理解和描述
引用自知乎专栏《自学编程路》
对几个部分的理解非常重要,本图所含意义并不全面,详细的说明后续文章会进行解读

Checkout

这里所谓的checkout 就是常说的切换,在切换到该分支前先验一下当前分支的情况,这个可以在后续的merge的理解中进行进一步深入的理解。会发现,checkout是切换头文件同时也是分枝的位置

synchronize

理解为同步就非常清楚了,但这个和其它云服务的理解不一样,他更准确的说应该是对已clone工程的同步更新,是从远程到本地的单向的,不是指双向的。

IntelliJ的VCS菜单项截图
IntelliJ(2018.1月Community版)的VCS菜单项截图

Fetch

理解为抓取,还是单向的把远程的抓到本地来,但并没有和本地的工作区代码融合,而是在暂存区,可以进行对比选择。

Pull

这个的理解看最上面的流程图是比较直观的,这个命令不管你已经做了什么,完成了哪些工作,直接把你工作区的代码给换掉。当然,这里你可以能够设置里的merge strategy进行设置。

Update

这个是针对多工程的,或者多branch的多个pull命令。当你点击它时,会同步进行所有Projects和branches的pull命令。仍然是单向的,不是字面意思的你上传,而是自上而下的单向覆盖。

Branch

要理解以下的内容,必须首先了解branch的概念,在git中的branch和其它系统中不太一样,在Git里brauch说白了是一个指针,而工作区的理解和这个概念息息相关。

在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。

来自Git2.0 版中文手册 Pro Git

Merge

合并、融合之意,详细的官方说明我们需要看merge的git官方说明手册

个人觉得较容易理解的官方中文Git释义链接,下面我把大意汇总如下:

merge说白了是一个指针向合并后向镜像转移的过程。

Rebase

在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase,两种最终结果相同,但产生的LOG不相同,rebase最后的commit会产生一个fast-forward,在团队合作中,尤其是在远程的提交贡献中,会以顺序的形式展示贡献。

track

是存在于全程中的,无论是单个文件,branch,乃至整个代码库,它关注的是状态。

commit

commit是实现文件状态改变的命令之一,commited作为文件的一个状态是一直被tracking的。

Push

推送,


二、总体理解

关于几个工作阶段的图形化理解和描述
引用自知乎专栏《自学编程路》
此图不是太准确,借来粗略说明一下问题,详细的在后续的文章中上自己的图。

总之,Git通过将编程工作人员的工作代码划分为四个阶段,并在阶段间实现了文件三种状态的全程跟踪。特点如下:

  1. 也是一个时代性的科技产物:分布式系统不多说了,现在已经烂大街了,但需要指明的是,设计Git的整体思想,始终是在一定的单机计算能力和存储空间基础上的。
  2. 对指针的开拓性应用会在未来的很多产业以及5G物联网应用中发挥更大作用:Git区别于以往VCS,不是文件的重复搬运,而是指针的灵活设计使用,固然是建立在计算能力大幅提高的基础上,另外,在未来分布式系统及物联网极大应用的过程中,对组件化和微服务的开发中,指针的开拓性应用也应该值得思考,同样编程语言对指针的控制能力也会进一步提升,另外,硬件设计方面的堆栈处理上也会有新的突破,可以作为未来的进一步研究方向和主题。
  3. Github不仅是生产力工具,而且在开源上的贡献不可估量。
  4. VS Code对于Git的深度融合真的太XX深了。

三、具体操作

具体的操作步骤我们不按照顺序一一地截图讲解了,只讲讲关键的几步,不提快捷键,因为IntelliJ这里的快捷键非常多,且Mac、Win和Linux平台都不一样,还是各位根据自己的习惯自设来得方便。

本来想来篇详细的长长长文的,但写着写着发现太多了,一篇文章放下来着实有点浪费,这还是等以后贴下文吧。

敬请原谅。

About The Author

乐观的无头苍蝇

无论什么情况下,每天都要对自己说:“Guten Morgen!”