IntelliJ IDEA 下的版本控制介绍
这一章节放在这么靠前位置来说是由于版本控制在我心目中的地位比后面的实战知识点都来得重要。不论是我的开发或是团队开发,版本控制都是能够很好地被使用的,目前我找不到任何开发者不使用版本控制的理由。并且对于 IDE 来说,集成版本控制的自己就是它最大的亮点之一,不少开发者也是为此而使用它。html
在本章节中也会对 IntelliJ IDEA 的相关版本控制进行了介绍,会开始涉及到一些 IntelliJ IDEA 人性化设置,也但愿你能从这一讲开始认识到 IntelliJ IDEA 的优雅。git
- 不少人认为 IntelliJ IDEA 自带了 SVN 或是 Git 等版本控制工具,认为只要安装了 IntelliJ IDEA 就能够彻底使用版本控制应有的功能。这彻底是一种错误的解读,IntelliJ IDEA 是自带对这些版本控制工具的支持插件,可是该装什么版本控制客户端仍是要照样装的。
- 如上图标注 1 所示,IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的。旗舰版默认支持目前主流的版本控制软件:CVS、Subversion(SVN)、Git、ClearCase、Mercurial、Perforce、TFS。又由于目前太多人使用 Github 进行协同或是项目版本管理,因此 IntelliJ IDEA 同时自带了 Github 插件,方便 Checkout 和管理你的 Github 项目。
SVN 的配置
要在 IntelliJ IDEA 中使用 SVN,须要先安装 SVN 客户端或是 TortoiseSVN 这类图形化工具,Windows 系统这里推荐安装 TortoiseSVN,即便在不使用 IntelliJ IDEA 也能够方便管理咱们的项目。github
SVN 主要使用的版本有 1.六、1.七、1.8,最新的是 1.9。推荐你们使用 1.8 的。若是你的项目使用的是 1.6 的版本,在安装 1.8 以后是能够直接对项目文件进行升级的,因此无需担忧,也所以更加推荐你们使用 1.8。apache
- Subversion 官网下载:https://subversion.apache.org/download/#recommended-release
- TortoiseSVN 官网下载:http://tortoisesvn.net/downloads.zh.html
- 如上图箭头所示,在安装 TortoiseSVN 的时候,默认
command line client tools
,是不安装的,这里建议勾选上。
- 如上图标注 1 所示,勾选
Use command line client
- 如上图标注 2 所示,建议 svn 的路径本身根据安装后的路径进行选择,否则有时候 IntelliJ IDEA 没法识别到会报:
Cannot run program "svn"
这类错误。- 如上图标注 3 所示,当使用一段时间 SVN 之后,发现各类 SVN 相关问题没法解决,能够考虑点击此按钮进行清除一下缓存。
根据目前的使用经验来看,IntelliJ IDEA 下 SVN 的使用经历并不算愉快,至少比 Git 很差用不少,常常遇到不少问题,因此这里也算是先给你们提个醒。若是紧急状况下 IntelliJ IDEA 没法更新、提交的时候,要记得使用 TortoiseSVN 来操做。缓存
Git 的配置
要在 IntelliJ IDEA 中使用 Git,须要先安装 Git 客户端,这里推荐安装官网版本。服务器
Git 主要的版本有 1.X、2.X,最新的是 2.X,使用版本随意,可是不要太新了,否则可能 IntelliJ IDEA 小旧版本会没法支持可能。并发
- Git 官网下载:http://git-scm.com/
- TortoiseGit 官网下载:http://download.tortoisegit.org/tgit/
如上图标注 1 所示,肯定好该路径下是否有对应的可执行文件。app
Github 的配置和使用
- 如上图标注 1 所示,填写你的 Github 登陆帐号和密码,点击
Test
能够进行测试是否能够正确连上。
- 如上图标注 1 所示,支持直接从你当前登陆的 Github 帐号上 Checkout 项目。
- 如上图标注 1 所示,支持把当前本地项目分享到你的 Github 帐号上。
- 如上图标注 1 所示,支持建立
Gist
。Github 的 Gist 官网地址:https://gist.github.com/
版本控制主要操做按钮
- 如上图标注 1 所示,对目录进行右键弹出的菜单选项。
- 如上图标注 1 所示,对文件进行右键弹出的菜单选项。
- 如上图标注红圈所示,为工具栏上版本控制操做按钮,基本上你们也都是使用这里进行操做。
- 第一个按钮:
Update Project
更新项目。- 第二个按钮:
Commit changes
提交项目上全部变化文件。点击这个按钮不会立马提交全部文件,而是先弹出一个被修改文件的一个汇总框,具体操做下面会有图片进行专门介绍。- 第三个按钮:
Compare with the Same Repository Version
当前文件与服务器上该文件通版本的内容进行比较。若是当前编辑的文件没有修改,则是灰色不可点击。- 第四个按钮:
Show history
显示当前文件的历史记录。- 第五个按钮:
Revert
还原当前被修改的文件到违背修改的版本状态下。若是当前编辑的文件没有修改,则是灰色不可点击。
- 如上图标注 1 所示,菜单栏上的版本控制操做区。
版本控制相关的经常使用设置说明
- 如上图标注 1 所示,当前项目使用的版本控制是
Git
。若是你不肯意这个项目继续使用版本控制能够点击旁边的减号按钮,若是你要切换版本控制,能够点击Git
,会出现 IntelliJ IDEA 支持的各类版本控制选择列表,可是咱们通常状况下一个项目不会有多个版本控制的。- 如上图标注 2 所示,
Show directories with changed descendants
表示子目录有文件被修改了,则该文件的全部上层目录都显示版本控制被概念的颜色。默认是不勾选的,我通常建议勾选此功能。
- 如上图标注 1 所示,
When files are created
表示当有新文件放进项目中的时候 IntelliJ IDEA 作如何处理,默认是Show options before adding to version control
表示弹出提示选项,让开发者决定这些新文件是加入到版本控制中仍是不加入。若是不想弹出提示,则选择下面两个选项进行默认操做。- 如上图标注 2 所示,
When files are deleted
表示当有新文件在项目中被删除的时候 IntelliJ IDEA 作如何处理,默认是Show options before removing from version control
表示弹出提示选项,让开发者决定这些被删除的是否从版本控制中删除。若是不想弹出提示,则选择下面两个选项进行默认操做。
- 如上图标注 1 所示,对于不想加入到版本控制的文件,能够添加要此忽略的列表中。可是若是已经加入到版本控制的文件使用此功能,则表示该文件 或 目录没法再使用版本控制相关的操做,好比提交、更新等。我我的使用过程当中发如今 SVN 上此功能不太好用,Git 上是能够用的。
- 上图所示的弹出层就是本文上面说的
Commit Changes
点击后弹出的变更文件汇总弹出层。- 如上图标注 1 所示,能够在文件上右键进行操做。
Show Diff
当前文件与服务器上该文件通版本的内容进行比较。Move to Another Changelist
将选中的文件转移到其余的Change list
中。Change list
是一个重要的概念,这里须要进行重点说明。不少时候,咱们开发一个项目同时并发的任务可能有不少,每一个任务涉及到的文件可能都是基于业务来说的。因此就会存在一个这样的状况:我改了 30 个文件,其中 15 个文件是属于订单问题,剩下 15 个是会员问题,那我但愿提交代码的时候是根据业务区分这些文件的,这样我填写Commit Message
是好描述的,同时在文件多的状况下,我也好区分这些要提交的文件业务模块。因此我通常会把属于订单的 15 个文件转移到其余的Change list
中,先把专一点集中在 15 个会员问题的文件,先提交会员问题的Change list
,而后在提交订单会员的Change list
。我我的还有一种用法是把一些文件暂时不提交的文件转移到一个我指定的Change list
,等后面我以为有必要提交了,再作提交操做,这样这些文件就不会干扰我当前修改的文件提交。总结下Change list
的功能就是为了让你更好地管理你的版本控制文件,让你的专一点获得更好的集中,从而提供效率。Jump to Source
打开并跳转到被选中。- 如上图标注 2 所示,能够根据工具栏按钮进行操做,操做的对象会鼠标选中的文件,多选能够按
Ctrl
后不放,须要注意的是这个更前面的复选框是没有多大关系的。如上图标注 3 所示,能够在提交前自动对被提交的文件进行一些操做事件(该项目使用的 Git,使用其余版本控制可能有些按钮有差别。):svn
Reformat code
格式化代码,若是是 Web 开发建议不要勾选,由于格式化 JSP 类文件,格式化效果很差。若是都是 Java 类则能够安心格式化。工具Rearrange code
从新编排代码,IntelliJ IDEA 支持各类复杂的编排设置选项,这个会在后面说。设置好了编码功能以后,这里就能够尝试勾选这个进行自动编排。Optimize imports
优化导入包,会在自动去掉没有使用的包。这个建议都勾选,这个只对 Java 类有做用,因此不用担忧有反作用。Perform code analysis
进行代码分析,这个建议不用在提交的时候处理,而是在开发完以后,要专门养成对代码进行分析的习惯。IntelliJ IDEA 集成了代码分析功能。Check TODO
检查代码中的TODO
。TODO
功能后面也会有章节进行讲解,这里简单介绍:这是一个记录待办事项的功能。Cleanup
清除下版本控制系统,去掉一些版本控制系统的错误信息,建议勾选。- 如上图标注 4 所示,填写提交的信息。
- 如上图标注 5 所示,
Change list
改变列表,这是一个下拉选项,说明咱们能够切换不一样的Change list
,提交不一样的Change list
文件。- 如上图标注箭头所示,咱们能够查看咱们提交历史中使用的
Commit Message
,有些时候,咱们作得是同一个任务,可是须要提交屡次,为了更好管理项目,建议是提交的Message
是保持一致的。
- 如上图标注箭头所示,若是你使用的 Git,点击此位置能够切换分支和建立分支,以及合并、删除分支等操做。
SVN 的使用
SVN 的这个窗口有的 IntelliJ IDEA 上叫 Changes
,有的叫 Version Control
,具体是什么缘由引发这样的差别,我暂时还不清楚。可是无论叫法如何里面的结构是同样的,因此对使用者来说没多大影响,可是你须要知道他们实际上是同样的功能便可。
上图 Local Changes
这个 Tab 表示当前项目的 SVN 中各个文件的总的状况预览。这里的 Default
是 IntelliJ IDEA 的默认 change list 名称,no commit
是我本身建立的一个change list,我我的有一个习惯是把一些暂时不须要提交的先放这个 list 里面。change list 很经常使用并且重要,本文前面也有强调过了,因此必定好认真对待。unversioned Files
表示项目中未加到版本控制系统中的文件,你能够点击 Click to browse
,会弹出一个弹出框列表显示这些未被加入的文件。
上图 Repository
这个 Tab 表示项目的 SVN 信息汇总,内容很是的详细,也是我平时用最多的地方。若是你点击这个 Tab 没看到数据,是由于你须要点击上图红圈这个刷新按钮。初次使用下默认的过滤条件不是我上图这样的,我习惯根据 User 进行过滤筛选,因此上图箭头中的 Filter 我是选择 User。选择以后,如上图标注 1 所示,显示了这个项目中参与提交的各个用户名,选择一个用户以后,上图标注 2 因此会显示出该用户提交了哪些记录。选择标注 2 区域中的某个提交记录后,标注 3 显示对应的具体提交细节,咱们能够对这些文件进行右键操做,具体操做内容跟本文上面提到的那些提交时的操做按钮差很少,这里很少讲。
总的来讲,SVN 这个功能用来管理和审查开发团队中人员的代码是很是好用的,因此很是很是建议你必定要学会该功能。