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. 即时性能分析工具 Pyroscope

    当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常 CPU 达到 100% 时,有时候也很难复制及找出关键问题点. 本篇文章,我们会介绍一套工具叫 ...

  2. 实验6、Flask API使用示例和拓展

    实验介绍 1. 实验内容 Flask 提供了多种API拓展,本节我们主要学习基于RESTful的Flask应用程序设计 2. 实验要点 学习和掌握多种RESTful的设计模式 3.实验环境 Cento ...

  3. 【NX二次开发】Block UI 指定位置

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  4. 使用charles抓取https的方法

    自己整理的步骤做个记录 1.下载证书,官方地址:http://www.charlesproxy.com/ssl.zip 可直接点击链接下载:http://charlesproxy.com/getssl ...

  5. 『无为则无心』Python基础 — 2、编译型语言和解释型语言的区别

    目录 1.什么是计算机语言 2.高级语言中的编译型语言和解释型语言 (1)编译型语言 (2)解释型语言 (3)编译型语言和解释型语言执行流程 3.知识扩展: 4.关于Python 1.什么是计算机语言 ...

  6. linux命令基础(一课)

    一.Linux命令基础 1.shell Linux系统中运行的一种特殊程序 在用户和内核之间充当'翻译官' 用户登录Linux系统时,自动加载一个shell程序 bash是Linux系统中默认使用的s ...

  7. GlusterFS更换Brick

    故障环境还原 GlusterFS集群系统一共有4个节点,集群信息如下 # 分别在各个节点上配置hosts.同步好系统时间,关闭防火墙和selinux [root@glusterfs-master-8 ...

  8. kubelet之volume manager源码分析

    kubernetes ceph-csi分析目录导航 基于tag v1.17.4 https://github.com/kubernetes/kubernetes/releases/tag/v1.17. ...

  9. unity调用安卓方法实现安装apk文件(androidx)

    原文链接:点击打开 unity想要实现安装apk文件需要与安卓通讯,所以需要自己来实现安卓代码. 第一步先要新建一个安卓项目提供给unity来使用,我这里使用的工具是android studio4.1 ...

  10. 时光卷轴,Microsoft大事记

    Our mission is to empower every person and every organization on the planet to achieve more. 2021年6月 ...