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进行项目管理(总结版)

【开发工具】-- IDEA集成Git在实际项目中的运用的更多相关文章

  1. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

  2. git 在 A 项目中引用 B 项目

    git 在 A 项目中引用 B 项目   场景: 需要在项目calcDLL(http://XXX/XXXA.git) 中 引用 项目libindex(http://XXX/XXXB.git). 解决方 ...

  3. iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)

    管理代码的地方主要有:Github(国外流行).CocoaChina.Cocoa4App.中国开源社区.CSDN.博客园.简书等等..... 现在主要介绍如何使用Github托管自己的项目代码. 尊重 ...

  4. 开发工具--浅谈Git

    工具|浅谈Git Git这个工具,是我一直想写文章,终于我实现了我的想法.在我开始写之前,发表一下自己的看法,git只是一个工具,既然已经认定是一个工具,那么一定具备工具这类的共同特征,请用面向对象的 ...

  5. 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结

    将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...

  6. git分支在项目中管理

    实际项目中如何使用Git做分支管理 2018年06月24日 18:08:24 ShuSheng007 阅读数:9241   版权声明: https://blog.csdn.net/ShuSheng00 ...

  7. salesforce零基础学习(九十九)Git 在salesforce项目中的应用(vs code篇)

    本篇参考: https://code.visualstudio.com/docs/editor/versioncontrol https://git-scm.com/doc https://git-s ...

  8. React-Native集成到已有项目中的总结

    安装Python 从官网下载并安装python 2.7.x(3.x版本不行) 安装node.js 从官网下载node.js的官方V6.X.X版本或更高版本.安装完成后检测是否安装成功:node -v ...

  9. ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块,用EasyAR集成到iOS端,由于现在到项目已经上线,下一版本要做一个AR功能,于是迫于需求需要,自己研究和翻阅读好多集成到资料. 通过整理分出几个重要到模块,其中在这里指出Xc ...

随机推荐

  1. CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet)

    CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet) ImVoteNet: Boosting 3D Object Detection in Point Clouds With ...

  2. Yolov4性能分析(上)

    Yolov4性能分析(上) 一.目录 实验测试 1) 测试介绍 2) Test 3) Train 二.   分析 1.实验测试 1. 1  实验测试方法 Yolov4训练train实验方法(Darkn ...

  3. JS设置GridView中的RadioButton只能选中一个

    //JS&JQuery $(document).ready(function () { //点击跳转链接返回浏览器历史的上一个页面 $("#btnBack").click( ...

  4. springmvc——CharacterEncodingFilter过滤器要放在所有过滤器前面

    CharacterEncodingFilter的拦截顺序必须是第一个,否则还是会出现乱码问题.这是因为 request对象的parameter并不是一开始就解析的,它是等你第一次调用getParame ...

  5. Redis面试连环问,快看看你能走到哪一步

    今天,我不自量力的面试了某大厂的java开发岗位,迎面走来一位风尘仆仆的中年男子,手里拿着屏幕还亮着的mac,他冲着我礼貌的笑了笑,然后说了句"不好意思,让你久等了",然后示意我坐 ...

  6. NOIP模拟测试30「return·one·magic」

    magic 题解 首先原式指数肯定会爆$long$ $long$ 首先根据欧拉定理我们可以将原式换成$N^{\sum\limits_{i=1}^{i<=N} [gcd(i,N)==1] C_{G ...

  7. 在vs中调试关闭之后不关闭页面

    在vs中调试api时会自动打开一个新的浏览器窗口,在关闭这个浏览器窗口时,会关闭调试.关闭调试时也会关闭浏览器窗口. 设置成调试时在已有的浏览器中打开调试页面,关闭调试也不会关掉浏览器窗口,反之亦然 ...

  8. ES6 学习笔记之对象的新增方法

    1. Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的 NaN 不等于自身,以及 +0 等 ...

  9. VS 2017 RC .net core ef+ MySql 出现错误

    在di注入时会出现错误 MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(ISensit ...

  10. 基于Yarp的http内网穿透库HttpMouse

    简介 前几天发表了<基于Yarp实现内网http穿透>,当时刚刚从原理图变成了粗糙的代码实现,项目连名字都还没有,也没有开放源代码.在之后几天的时间,我不断地重构,朝着"可集成. ...