【开发工具】-- 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 ...
随机推荐
- 什么是视觉Visual SLAM
什么是视觉Visual SLAM What Is Visual SLAM? What are the origins of visual SLAM? and what are some other a ...
- antd组件库BackTop组件设置动态背景图片的问题
有这么一个需求,利用antd组件库中的BackTop组件的逻辑,但是自己写样式. 我的目标样式是:有两张图片,一张是normal(正常情况),一张是hover(悬停情况). 这时候就要用到css的动画 ...
- P1522 [USACO2.4]牛的旅行 Cow Tours(Floyd)
题目描述 Farmer John 的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧区通过任何路径都不连通.这样,Farmer Joh ...
- 十三、给已安装的nginx动态添加模块
给已安装的nginx动态添加模块说明:已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢?具体:这里以安装 --with-http_ssl_module模块为例nginx的模块是需要 ...
- 错误:软件包:php-fpm-5.4.16-42.el7.x86_64 需要:php-common(x86-64)
报错信息:错误:软件包:php-fpm-5.4.16-42.el7.x86_64 (/php-fpm-5.4.16-42.el7.x86_64)需要:php-common(x86-64) = 5.4. ...
- Vue.js源码解析-Vue初始化流程
目录 前言 1. 初始化流程概述图.代码流程图 1.1 初始化流程概述 1.2 初始化代码执行流程图 2. 初始化相关代码分析 2.1 initGlobalAPI(Vue) 初始化Vue的全局静态AP ...
- .Net Core with 微服务 - Consul 注册中心
上一次我们介绍了 Ocelot 网关的基本用法.这次我们开始介绍服务注册发现组件 Consul 的简单使用方法. 服务注册发现 首先先让我们回顾下服务注册发现的概念. 在实施微服务之后,我们的调用都变 ...
- 查询表空间总大小(dba_data_files和dba_segments,dba_free_space区别)
1, dba_data_files,dba_segments,dba_free_space得出结论:一般情况下(没有drop表的时候):dba_data_files bytes = (dba_segm ...
- 备份schema并排除大表到ASM磁盘上
1.查出占用空间比较大的表 select owner,segment_name,segment_type,bytes/1024/1024 mb from dab_segment where owner ...
- linux安装配置交叉编译器arm-linux-gnueabi-gcc
要使我们在x86架构下运行的程序迁移至ARM架构的开发板中运行时,需要通过交叉编译器将x86下编写的程序进行编译后,开发版才能运行. 在安装之前我们需要了解,什么是交叉编译器. 一.下载交叉编译器 这 ...