【开发工具】-- IDEA集成Git在实际项目中的运用
1.企业实际项目中Git的使用
在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目。以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub上;CETC电科是存放在码云Gitee的企业版仓库上。而基于Git的使用不再是老掉牙的原始Git命令行,或者是一般的TortoiseGit。
我们在企业中开发经常使用的是基于IDEA集成Git工具进行代码的提交,既方便又快捷。同时也是很多有经验的面试官会常用来面试考验培训班新手和实际开发者的常规性面试问题。
其实企业开发规范的IDEA提交代码也就那么点要掌握的知识:Git Clone拉代码仓库(项目)、IDEA集成git管控项目、Commit/Push、Pull/Stash;当然这是在IDEA中的操作,一个字,熟能生巧,就是敏捷。下面我们就简单来梳理和掌握吧。
我这里以Gitee上面的一个开源项目:若依来说明,下面是这个项目的地址,其实和企业中的项目开发类似,大家可以把它想象成是一个企业内网的托管代码的仓库地址。
https://gitee.com/zhangmrit/ruoyi-cloud?_from=gitee_search
1.1.项目的Git Clone
进入到项目中,第一天你肯定得搭个环境、拉个项目,熟悉一下这个项目的代码吧。所以我们来把这个项目从Gitee拉取到我们本机开发的电脑上。
这个我没什么好说的,你是用老乌龟还是IDEA都能把这个项目拉取到本地。就是复制代码库的地址,使用老乌龟的Git Clone使我们一般的方法,直接可以把项目代码Clone到本地代码库。
而重点是IDEA中的配置,老乌龟落后了,不敏捷,项目都用IDEA,你一个人好意思说你没用过~~~,尴尬。
在Git中找到Clone,将刚才复制下来的URL地址粘贴进去,之后点击下面的Clone按钮即可。(我是用的IDEA2021,公司都用最新版本,用着爽啊!)
好了项目Clone完毕了,IDEA会自动提示你在新窗口中打开我们Clone下来的项目,选择New Window,在新打开的窗口中就可以看到你Clone的项目,配置好Maven之后,就可以让它去下载对应的依赖构建你的项目了。一般公司的项目就像这个开源项目一样,构建依赖还是有点久的,10分钟左右吧。哈哈,漫长~
经过这个步骤,我们就完成了公司项目的拉取和本地构建的工作,IDEA还是很nice的!
1.2.IDEA集成Git管控项目
在实际项目开发中,我们刚才拉取的分支是master分支,也就是主分支,这个一般是发布版本分支。而我们一般开发使用Dev分支,不会直接在master分支上进行开发。所以在公司我们会看到Clone的分支上有很多分支,我们需要选择对应的分支进行拉取开发,一般我们会要求在项目上Fork自己的代码仓库,单独自己构建一个代码库,免得你在master或者大dev分支上乱搞。而对应Java团队开发这是非常必要的。
所以我们忘记上面的操作,重新拉取一遍自己的分支。
①Fork自己的代码仓库:
②使用Fork的url按照1.1中的步骤重新构建自己的项目,同时说明一下在IDEA中对应Git的使用需要关联本机上安装的Git.exe位置:
1.3.Commit和Push操作
可以看到若依这里有两个分支:一个是master分支,另外一个是nacos分支,在公司中可能除了master分支外就是dev分支,或者是test分支等等很多分支,我们一般选择dev分支的代码进行checkout即可。这里我切换到了nacos分支(假装它是dev分支)。实际操作也就是选择对应的分支进行切换就行。
很快我就发现了项目中的GenUtils中的代码注释有问题,这里进行了对应修改补充,使用Git的Commit命令,可以联合Push命令进行远端代码的推送。
但是注意:在推送的过程中,我们开发项目可能有别的同时已经向总的版本Dev分支上提交了新的代码,那么我们进行Push的同时需要Pull拉取远端的Dev分支上最新的代码看是否存在冲突Confilct,如果有冲突,需要优先解决冲突。
添加远端Dev分支(总的Dev分支,项目的大开发分支:所有人的代码都统一合入到这个大Dev_remote分支上)
Pull拉取大分支上最新的代码:
选择Git -- Commit提交自己的代码,同时可以选择Push将代码推送到local的Fork仓库
1.4.创建Pull Request进行Dev代码合并
这里就是把自己的代码向Dev大的开发分支合并,提交自己的工作量代码啦!
这里需要我们点击Pull Requests,新建一个合并请求,用于将自己写的代码向远端总的Dev分支上合并代码。
这样就完成了自己开发分支的代码提交。
1.5.Pull和Stash操作
刚才已经说明了,Pull操作就是从远端分支拉取代码,更新最新的代码到自己本地代码库。对应操作为:Git -- Pull
选择对应是Dev分支的Url就行(开发大版本库的Url),不是个人Fork的那个开发仓库地址。
Stash操作:
Stash可以在你写了很多的代码类时,比如有10-20多个新文件,我一下子从远端拉取会有很多冲突的时候,我就可以用Stash操作把自己的代码优先推送到本地仓库。
如下,我这里写了一个很完美的RedisUtil工具类,但是和远端上面有了一个Redis工具类,我这个工具类就显得多余,但是我又不想有冲突,这里就用IDEA的Stash缓存我的代码。
点击Create Stash之后,你本地的所有新文件更新的代码都会暂存到本地仓库中,冲突文件也会从项目中消失,这样你就可以拉取Pull到Dev最新的代码,完全不用担心有任何冲突(这里就不同于直接Commit从远端Pull代码,如果有冲突Pull不会成功的,会有很多冲突的文件需要处理)。
Stash之后,可以直接丝滑地拉取远端代码。
之后使用Unstash Changes,选择对应的Stashes节点,就可以将原来的文件又恢复到本地,这个时候再解决冲突即可,这样保证了我们写代码的爽快感,而又能及时获取同步最新的代码库信息。在协同编程中非常常用。
Stash更详细的解释可以参考另一篇博文:Git中的Stash Changes和UnStash Changes用法
以上就是企业项目开发中涉及IDEA中Git开发的主要要知道的技能点,无论是用IDEA还是老乌龟的Git提交工具,哪个顺手哪个能提高效率就用哪个。但是项目团队成员都用你不能不知道,不知道也要及时去学习,补上自己的遗漏点。
多做,少想,少发言,行动的巨人永远大于思想的矮子。
博文参考:
【开发工具】-- IDEA集成Git在实际项目中的运用的更多相关文章
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- git 在 A 项目中引用 B 项目
git 在 A 项目中引用 B 项目 场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...
- iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)
管理代码的地方主要有:Github(国外流行).CocoaChina.Cocoa4App.中国开源社区.CSDN.博客园.简书等等..... 现在主要介绍如何使用Github托管自己的项目代码. 尊重 ...
- 开发工具--浅谈Git
工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...
- 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结
将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...
- git分支在项目中管理
实际项目中如何使用Git做分支管理 2018年06月24日 18:08:24 ShuSheng007 阅读数:9241 版权声明: https://blog.csdn.net/ShuSheng00 ...
- salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)
本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...
- React-Native集成到已有项目中的总结
安装Python 从官网下载并安装python 2.7.x(3.x版本不行) 安装node.js 从官网下载node.js的官方V6.X.X版本或更高版本.安装完成后检测是否安装成功:node -v ...
- ios -Unity3D的EasyAR集成到已经有项目中。
近期 在做AR这一块,用EasyAR集成到iOS端,由于现在到项目已经上线,下一版本要做一个AR功能,于是迫于需求需要,自己研究和翻阅读好多集成到资料. 通过整理分出几个重要到模块,其中在这里指出Xc ...
随机推荐
- JVM 的执行子系统
JVM 的执行子系统. 一.Class类文件结构 1. JVM的平台无关性 与平台无关性是建立在操作系统上,虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机,它们都可以载入和执行字节码,从而实现程序 ...
- Docker开启安全的TLS远程连接
目录 1.1 不安全的远程访问方式 1.1.1 编辑docker.service文件: 1.1.2 重新加载Docker配置生效 1.1.3 警告! 2.1 建立基于TLS数字签名的安全连接 1.1 ...
- 《MySQL面试小抄》索引失效场景验证
我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统,自己无法快速定位到关键问题点!!! 本期主要面试考点 面试官考点之什么情况下会索 ...
- javascript之一切都是对象
在学习的过程中,我们常常能听到这样一句话:一切皆是对象.那么这句话该如何理解呢?首先,我们要明确对象的概念.要明白除了基本数据类型都是对象. typeof操作符是大家经常使用的,我们常用它来检测给定变 ...
- excel函数提取内容中的汉字
RIGHT(A2,LENB(A2)-LEN(A2)) 函数LENB将每个汉字(双字节字符)的字符数按2计数,LEN函数则对所有的字符都按1计数.因此"LENB(A2)-LEN(A2)&quo ...
- MiniSMB 专业网络性能测试仪表 英特尔82576 4*1GE 网卡性能测试报告
MiniSMB 专业网络性能测试仪表英特尔82576 4*1GE网卡性能测试报告 一.测试环境 测试配置 ①工控机配置: CPU:Intel(R) Core(TM) i7-6800K CPU @ 3. ...
- 02 jumpserver系统设置
2.系统设置: (1)基本设置: (2)邮件设置: 1)163邮箱设置: 2)在jumpserver上填写邮箱信息: 3)邮件测试信息如下: (3)邮件内容设置: (4)终端设置: (5)安全设置:
- 界面设计ie8 笔记
1.ie8 jsp中设置 margin:0 auto 无效 解决方法 在html 标签改为<!DOCTYPE html> 2.ie8 input file 无法通过js触发点击事件,网上 ...
- oracle查询用户所在表为空的表名
1 select * from user_tables where num_rows = 0 查询之后发现查询的不全,查询之后发现num_rows为空 select * from user_table ...
- SpringBoot集成websocket发送后台日志到前台页面
业务需求 后台为一个采集系统,需要将采集过程中产生的日志实时发送到前台页面展示,以便了解采集过程. 技能点 SpringBoot 2.x websocket logback thymeleaf Rab ...