idea学习系列三之版本管理工具

上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了。
这篇文件将会介绍一下在idea中版本管理工具的使用,因为版本管理工具也是开发中必不可少的东西。这里主要介绍两个主流的版本管理工具gitsvn
不过这里的主题是idea所以只介绍在idea中如何使用这两个版本管理工具,至于git和svn的相关知识请自己去问度娘哈。网上有很多的资料

git

配置

初始配置

使用git的配置很简单,只需要指定安装的git的路径就可以了

忽略文件

在idea中忽略文件可以在设置隐藏文件哪里进行设置(忽略文件设置请参考前面的文章),只要是隐藏的文件,那么Git会自动忽略。当然也可以在git中单独配置。

使用

基本操作

将项目纳入git管理,这里其实也直接进入项目执行git init

在纳入git管理之后点击项目右键就会有Git的选项了。在里面使用和平常使用没有什么区别,先add,然后commit,然后再push。

不过需要注意的是,如果项目还未加入的到远程仓库,在第一次提交中之前得先执行pull,可以在命令行中进行操作,也可以在idea中操作,执行了pull之后才能执行push。

注意:

在idea中的有些操作和git上面的不是完全相同的,

  • 在git中我们只要改了文件那么就必须重新add然后commit,而idea中只有新增的文件要add,未add的时候文件为红色,add之后就变成了绿色而commit之后就变成了白色。当commit之后在修改,那么他就会显示为蓝色,但是这个时候是不需要在进行add了的。而在git中这个时候是还需要进行add的才能commit的。
  • 在idea中点击文件右键出来的Revert的作用和git中checkout的作用一样,都是将本地的修改还原。而git中的revert他会将某个版本的提交给回退,并且会生成一次commit

从远程仓库中导入项目

这个挺简单的,直接选择从远程仓库拉取然后填写地址选择项目位置就行

或者

分支操作

创建分支可以点击项目右键选择git然后选择Repository在选择Branches创建分支,在创建分支后idea的最右下角会出现一个git的分支标识,我们可以点击这个标识进行分支的切换以及各种操作

Log控制台的操作

  • Checkout Revision这个的作用和reset --hard的作用类似,不过区别在于,reset --hard他会将远程仓库覆盖本地和暂存区域的,如果回滚的时候文件被git所管理并且有修改那么通过reset --hard的操作他会丢弃修改。而Checkout Revision则不会,并且如果在回滚之后有冲突,他还会让你解决冲突。所以这就不会直接把我们的修改给丢弃了,并且如果有冲突他还会创建一个stash

  • Reset Current Branch to Here,这个里面用的好像也只有hard和git中的一样,默认的那个Mixed,这里没啥用,即使回滚了暂存区的,在idea里面好像也没有checkout来将暂存区的数据覆盖到本地

  • Revert,这个和git中的Revert一样,不过如果没有冲突的话,他会让你选择冲突怎么解决

    • 在解决冲突的时候有这么几个选项

      Accept Yours,这个表示以我们现在的节点为准,选中要Revert节点的修改丢弃。

      Accept Theirs,这个表示以选中要Revert节点为准,当前节点的丢弃,所以这样其实就完全跳到要Revert的节点上了

      Merger,自己解决冲突

      所以如果想效果和git上使用Revert的效果一致就选择Accept Theirs

    • 合并冲突

      ​ 这个页面的布局,左边的是local,也就是本地的,你修改的,右边的是server,也就是 服务器上的,中间的就是result,也就是合并结果。在合并的时候,看截图中间的2个红框,里面的箭头方向都是朝向中间的,要是你觉得哪边合适,也就是哪边的代码是OK的,那么就点哪边的箭头,然后抛弃的哪一边,就点对应的那个差号,就放弃啦。最后把这些都变更,冲突,都处理完啦。点apply,这之后,就算是合并冲突完事儿啦。

  • cherry-pick,这个和git上面的一样,用于将某个提交进行合并,并且又冲突了他会提示解决冲突。

代码比较

在idea中使用代码比较,只需要选中要比较的数据右键就可以进行比较了,其中除了文件以外,其他的例如项目和包只能进行分支之间的比较


文件比较有3中

  • Compare with the Same Repository Version

    • 这个是将当前文件和本地仓库中最新版本文件进行比较
  • Compare with…
    • 可以选择当前文件与对应的版本进行比较,其中版本中必须要对这个文件进行了修改才可以对这个版本进行比较
  • Compare with Branch
    • 将当前文件和某个分支中的最新版本文件进行比较。

svn

参考:

https://blog.csdn.net/qq_27093465/article/details/74898489

配置

初始配置

在使用svn的时候首先最好安装一个svn小乌龟。其中安装svn小乌龟的时候要记得要把command line client tools给加上,默认安装svn小乌龟他是不会安装客户端命令行工具的。


安装完之后在idea只需要指向这个svn命令行工具就可以了

svn忽略的文件配置和git一样,连配置的地方也一样

监控远程仓库是否有提交


勾上这个选项他就会自动的检查是否有人提交了,如果有那那么就会在右下角给出提示


如果有人提交,那么右下角这个就会变亮,没有可以更新的时候就是灰色的

使用

基本操作

​ 对于新增的文件这里和git一样新增的时候文件是红色的,要进行add,add了之后才能commit,而其他颜色的编辑和git一样。

​ 在选择项目或文件后右键选中Subversion所弹出的框中各个选项的含义:

项目的导入导出

将项目导入仓库

​ 将项目交给svn管理我们可以选择VSC下面的Import into Version Control 下面的Share Project(Subversion)。这里的Share Project的功能和eclipse中Share Project中的功能一样,其实也可以选择Import into Subversion,不过这个仅仅只是将项目上传到svn仓库中,并不会将当前项目加入到svn的管理中。所以通常不用

项目的检出

在检出项目的时候有一点需要注意,就是在选择检出的项目所在的位置的时候,通常情况都是选择第二个带项目名的,这样导出之后就和svn上面的一样了。如果选择第一个我们还要自己对项目命名。

控制台

主要使用的控制台就两个Repository和Incoming,其中Repository中包含了历史提交记录,而Incoming中包含了本地尚未更新的提交记录。

  • Repository控制台

    • 这个控制台里面也没有什么可以操作的,其中这里的Revert Changes和git中的revert作用一样用于撤销某个版本的修改,但是这里撤销了之后他不会在创建一个节点

回退操作

整个项目回退:

​ 如果我们要想实现类似于git中的reset --hard的作用,只能在更新的时候选择对应的版本来更新,从而实现版本的跳转,还有需要注意的是如果我修改了某个文件没有提交。在更新的到另外一个版本的时候,如果另外一个版本没有这个文件那么这个文件是不会消失的。如果有冲突那么就解决冲突

点击最后面的那个…就可以选择对应的版本。

​ 当然版本的回滚在idea中支持不是很好,我们可以直接使用TortoiseSVN来回滚到某个版本,不过如果非要在idea中回滚到某个版本也可以不过有点麻烦

​ idea中具体的回滚方式是,由于在跳转到某个版本之后,我们就不是最新版本了,所以这个时候在修改代码之后提交那么就会报错,所以我们就需要在跳转到某个版本之后改好了代码,在commit之前先更新一下,这时候由于我们修改了所以会有冲突,不过由于我们回滚所以直接用我们的修改覆盖所有就可以了。解决冲突之后在重新提交。但这个也有一个缺陷就是如果是回滚版本与最新版本这两个版本之间如果新增了文件我们不好解决因为不会有提示。所以还是在TortoiseSVN里面回滚比较好。

单个文件回退:

​ 单个文件回退我首先需要选中某个文件,然后选择svn显示历史记录(show history)在打开的窗口中选择要回退的版本,右键然后选择get就可以进行回退了。

分支操作

​ 在svn中分支并不是很常用,并且在svn中的分支其实就是在仓库中创建一个项目副本。

参考:

https://blog.csdn.net/bigcharsen/article/details/82230249

  • 创建分支

    • 在创建分支前,需要到本地仓库中创建一个分支文件夹,然后再创建一个分支版本例如:在项目同级目录下创建一个branches,然后再branches下面创建一个v1,表示v1版本分支存储路径。

    • 然后再idea中的svn操作中选择Branch or Tag进行分支的创建


    • 完成之后他会将项目上传到svn仓库的指定位置中。

    • 创建好之后在idea中配置创建好的分支,可以在更新的时候配置也可以在控制台配置

  • 切换分支

    • 切换分支其实就是将svn仓库中的分支在拉一份下来,可以在更新的时候选择要切换的分支

      点…选择我们之前配置好的分支,然后更新,更新下来之后就是最新的分支了

  • 合并分支

    • 假如我们要将v1分支合并到trunk主分支里面,那么需要先切换到trunk主分支中。然后点击控制台的Merge From按钮选择要合并的分支

      并且在合并的时候我们可以选择是合并某些版本或所有都合并

      第一个为合并所有,第二个为合并某些版本点击之后他会让你选择版本进行合并

      如果有冲突,会弹窗冲突的文件列表,点击每个文件解决冲突。如果没有冲突,等一会即合并完成

版本控制特殊操作技巧

配置

  • 子目录有文件被修改了,则该文件的所有上层目录都显示版本控制被修改的颜色,默认是不勾选的。这个建议勾上

提交前操作

  • Reformat code 格式化代码,如果是 Web 开发建议不要勾选,因为格式化 JSP 类文件,格式化效果不好。如果都是 Java 类则可以安心格式化。
  • Rearrange code 重新编排代码,IntelliJ IDEA 支持各种复杂的编排设置选项。设置好了编码功能之后,这里就可以尝试勾选这个进行自动编排。
  • Optimize imports 优化导入包,会在自动去掉没有使用的包。这个建议都勾选,这个只对 Java 类有作用,所以不用担心有副作用。
  • Perform code analysis 进行代码分析,这个建议不用在提交的时候处理,而是在开发完之后,要专门养成对代码进行分析的习惯。IntelliJ IDEA 集成了代码分析功能。
  • Check TODO 检查代码中的 TODO。
  • Cleanup 清除下版本控制系统,去掉一些版本控制系统的错误信息,建议勾选

其实勾选那个Cleanup就行,当然也可以勾选一下Optimize imports 优化导入包

编辑技巧

  • 在文件行号哪里右键点击选中annotate可以显示最近一次提交的信息,并且鼠标移动到某信息上还会显示提交说明,点击还可以弹出本次提交涉及到的文件

  • 当我们对文件进行了修改,那么修改的行前面会有样式的变化。这时我们可以点击颜色的那部分他就会弹出几个选项,并且如果是修改的时候他还会弹出修改前的代码

分组操作

在idea的Version Control中我们可以,点击+号新增一个Changelist。当文件修改之后他会自动进入Default这个默认的Changelist。然后我们可以点击Default里面的文件拖到我们新增的changelist中。在提交的时候我们可以选择提交那个Changelist中的修改。通过这个我们就可以只提交某一部分数据了。

提交的时候可以选择提交那个Changelist中的修改

并且这个还有一个好处是,我们可以将一些不需要提交的临时改动放在一个单独的分组中,在弄好了之后就直接把那个分组进行还原就可以了

脱离版本控制

让项目脱离版本控制的方式有两种

  • 直接删除对应文件。只需要将项目下的.svn或.git以及.idea下的vcs.xml文件删除就可以了
  • 在Version Control中删除对应的版本控制,并且删除之后还可以在加回来,那么就可以被版本控制工具控制了

设置是否保存密码

勾选上表示不保存密码

好啦,到这里在idea中怎么使用git和svn就介绍完了,可能在实际的使用中有很多操作都不会使用,但是我们还是要了解的。对于git和svn的操作我们还可以通过TortoiseGit和TottoiseSVN或者直接通过命令行来操作。所以操作的途径还是很多的哈

下一篇,idea学习系列四之maven及服务器的使用

idea学习系列三之版本管理工具相关推荐

  1. Pyside2 学习系列三:PyInstaller打包项目瘦身(超详细的Pyside2 攻略)

    继上一篇文章打包后,发现包太大了,我们现在开始进行瘦身优化. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 不想细看的朋友 可以直接跳到 最后 方法对比 ...

  2. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  3. Vue+Electron学习系列 (三) -- 自动更新

    Vue+Electron学习系列 ​​​​​​​1️⃣Vue+Electron学习系列 (一) -- 初识​​​​​​​ 2️⃣ Vue+Electron学习系列 (二) -- 打包发布 3️⃣ Vu ...

  4. Cosmos的基石:IL2CPU编译器--.net/C#开源操作系统学习系列三

    本文的代码包以cosmos-12304.zip为例(从这个包开始,COSMOS的内核算是有了个基本的雏形,就像是一颗大树在出芽前会先长出庞大的根系,现在就要破土长出第一颗芽了) IL2CPU之于COS ...

  5. Java NIO学习系列三:Selector

    前面的两篇文章中总结了Java NIO中的两大基础组件Buffer和Channel的相关知识点,在NIO中都是通过Channel和Buffer的协作来读写数据的,在这个基础上通过selector来协调 ...

  6. Java I/O系统学习系列三:I/O流的典型使用方式

    尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适 ...

  7. NMock学习系列(三)--- NMock在DDD领域驱动的单元测试中的应用

    介绍 领域驱动设计涵盖的知识点比较多,其中代码的架构.设计.编写基本上只占到其中的很小一部分,其它的大部分讲解的是需求的获取方式.项目的管理方式等知识.本篇就是针对这一小部分的知识点位来展开的.所以本 ...

  8. 网络基础学习系列三http

    目录 应用层 协议 实现一个计算器 1无序列化和反序列化的计算器 Protocol.hpp Sock.hpp Makefile CalServer.cc CalClient.cc 2.含序列化和反序列 ...

  9. RabbitMQ入门学习系列(三).消息发送接收

    快速阅读 用Rabitmq的队列管理,以及如何保证消息在队列中不丢失.通过ack的消息确认和持久化进行操作.以及Rabbit中如何用Web面板进行管理队列.消费者如何处理耗时的任务 生产者代码创建链接 ...

最新文章

  1. 使用String.intern减少内存使用
  2. Android 首页图片轮播
  3. visual studio 2010 开发net 2.0 3.5项目
  4. Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略
  5. bert模型可以做文本主题识别吗_BERT如何融合主题模型-ACL2020
  6. 2020 开春程序员面试必备!拿走不谢!
  7. Android预定义样式?android:attr/attribute、?attr/attribute和?attribute
  8. cramer定理_线性代数部分重要定理总结
  9. php ajax可编辑表格,jquerAjax+php实现表格的增删改查(带数据库)
  10. 中国医院评审/评级标准及区别和特点
  11. 计算机剪切全选快捷键,全选快捷键是什么
  12. Python深度学习-第一章、什么是深度学习
  13. 【Java写的碰碰球游戏(2) 】
  14. 前端做一个简单的随机气泡(随机大小,随机颜色,随机方向,随机速度,透明度改变)的静态网页
  15. M1001 4G/5G应急指挥箱
  16. 电脑无法打开计算机是怎么回事,电脑的office软件突然打不开怎么办
  17. angular.js-服务-http-路由(5)
  18. smartgit入门安装
  19. 关于计算机备份的管理规定,电脑管理制度网友投稿(备份存档)
  20. Vuforia教程 ---基于Unity3D

热门文章

  1. excel图标设置横坐标
  2. 在 Java 代码中来一段 JavaScript?聊聊 Flowable 中的脚本任务
  3. 关于TI账号注册卡在机器人验证那一步
  4. 利用prusa 3d打印地形模型 如何合理切片并提高打印速度
  5. 树莓派Opencv获取ESP32-CAM视频源(解决不能获取问题)
  6. 前端国际化之react中英文切换
  7. Python爬虫脚本,利用Beautifulfly爬取动态网页网页(源码)
  8. swit 闭包使用,闭包和OC的block非常相似,先回顾block
  9. 【博客话题】谈谈我工作的 入门恩师---“小武”
  10. hadoop-common源码分析之-Configuration