IDEA使用Git进行代码管理教程

news2024/11/23 18:37:35

系列文章目录

1.Win11Git安装教程
2.git同时配置Gitee和GitHub


文章目录

  • 系列文章目录
  • 前言
  • 一、Git提交代码
  • 二、合并分支
  • 三、版本回退


前言

这一篇文章主要用来记录如何使用IDEA中的git进行代码管理,包括日常开发中进行代码提交,以及如何将开发分支的代码提交到主分支。如果想要看如何安装Git以及Git同时配置Gitee和GitHub的可以看一下上面的两篇文章。


一、Git提交代码

  1. 首先在idea中配置git,如图所示
    在这里插入图片描述
    选择git的安装路径,之后点击test,如果出现git的版本号表示配置成功。

  2. 然后在idea登录自己的gitee账号或者github账号
    在这里插入图片描述
    根据提示登录即可。

  3. 然后如果是新建项目,则可以在建立项目的时候勾选创建Git仓库(多module项目不推荐,如果是单项目可以使用该种方式)。如下图所示。
    在这里插入图片描述
    这样创建的向项目,我在使用过程中遇到了如下问题:
    当我在该项目中,创建多个module时,默认会给每个module创建git仓库,也就是当你提交到远程Gitee时,需要把各module分别提交到单独的仓库。如下示例:
    在这里插入图片描述
    当我创建了一个eureka-demo项目,在创建的时候勾选了创建git仓库,然后又为该项目创建了几个module时,会发现每个module下都会有一个.git文件夹,表示每个module都创建了单独的仓库。这个时候,你去把整个项目提交到Gitee的时候,提交的项目文件是不包括module的。所以我一般都是先直接创建一个项目,然后在IDEA中VSC选择share project on gitee创建git仓库,这样每个module也很会包含在整个仓库中。

  4. 如果在创建项目时,没有勾选创建仓库,可以在进入项目后再通过VSC添加Git仓库,如下所示:
    在这里插入图片描述
    选则share project on gitee,然后填写仓库名,分支,仓库描述,并选择是公开还是私有。
    在这里插入图片描述
    然后点分享即可。
    之后就可以再Gitee看到刚刚上传的分支了。

  5. 然后你可以创建一个dev分支,用来做开发环境,当dev修改测试通过之后,就可以把dev分支合并到主分支master。

  6. 平时的代码编写在dev分支,然后每次写完一个功能之后可以进行提交并推送到远程仓库,下面是如何进行推送。

  7. 在平时使用的使用,可以点击Git,然后下面有一些常用功能,介绍如下:
    在这里插入图片描述

  • commit: 将代码提交到本地仓库
  • push:将本地仓库推送到远程仓库
  • update:将远程仓库中的项目拉取到本地,更新本地项目(idea中的update进行的操作是可以设定的是以merge还是rebase进行更新)
  • pull:拉取项目到本地
  • merge:合并分支,保留分支提交历史,能从图谱中看到分支提交曲线
  • rebase:合并分支,提交分支为一条直线,直观简洁。比如,将dev分支rebase到master分支,合并后的则在master分支。会改变提交历史,如果有冲突,需要手动解决。
  • new branch: 新建分支
    在这里插入图片描述
    如上所示,当你代码修改后,可以先commit(绿色对号)到本地,然后push(绿色向上箭头)到远程,当需要将远程仓库中的更新拉取到本地则可点击蓝色向下箭头。

二、合并分支

对于合并分支,有两种方式merge和rebase,两种方式各有优点,具体如下所示:
git merge和rebase的区别如下:

  1. 操作方式不同:git merge会创建一个新的合并提交,这个提交有两个父提交,分别指向合并之前的两个分支。而git rebase则是将源分支的提交逐个应用在目标分支的顶部,使它们看起来像是在目标分支上连续提交的。
  2. 提交历史不同:git merge在提交历史中保留了明确的合并记录,能够清晰地展示分支的合并情况。而git rebase会改变提交历史,让提交历史更加线性和干净,但可能会丢失源分支的合并信息。
  3. 分支保留情况不同:git merge操作后,原始分支的历史保持不变。而git rebase虽然原始分支的提交仍然存在,但如果未保留源分支,则可能会被删除。
  4. 适用场景不同:git merge通常用于合并长期维护的分支到主分支或其他稳定分支,这样可以保留完整的分支历史。而git rebase通常用于保持提交历史的整洁和线性,特别是在临时性修复分支上工作时。它也常用于将最新的更改从目标分支合并到本地分支以避免合并冲突。

在实际使用中,可以根据项目的工作流和合并策略,根据需要选择合适的命令。请注意,使用git rebase时需要小心,避免在公共分支上使用,因为它会改变历史,可能导致冲突。而我一般是在dev中进行开发,然后master主分支为稳定分支,然后当需要把测试通过后的内容push到dev,然后使用merge合并到主分支,这样不仅能够保留明确直观的分支历史,也能通过提交历史中查看一个团队的工作方式,分配等。如果是多人合作项目,则rebase的应用场景是将主分支的内容合并到自己的开发分支,这样自己的分支提交历史清晰明了是一条线性的。

  1. 当你在dev分支的更新需要合并到其他分支的时候,可以在idea中进行合并,但合并前一般先update一下,拉取远程仓库中的最新更改,然后再进行合并。
  2. 打开git,查看当前分支
    在这里插入图片描述
    如上图所示,左侧显示的是本地分支和远程分支,右侧显示的是当前dev分支的活动历史。当你需要把dev上的更改提交到master上时,可以右键当前分支,如图所示:
    在这里插入图片描述
    这里有两个选择,一个是切换并将当前分支rebase到master分支上,另一个就是将当前分支merge到master上。提交时注意查看目前所在分支。

三、版本回退

原始项目结构如下所示
在这里插入图片描述
仓库提交历史如下;
在这里插入图片描述

  1. 首先选中自己要回退到的提交,然后右键选择copy Revision Number
    在这里插入图片描述

  2. 然后在git中选择Reset HEAD
    在这里插入图片描述
    选择重置类型为hard,把刚刚复制的数字粘贴到第二个框内,然后点reset即可
    在这里插入图片描述
    可以看到我的提交已经变成了刚刚选中的那一个。
    在这里插入图片描述
    上面进行的时本地回退,这是如果我们进行push到远程仓库会出现被拒绝的问题,因为回退会导致远程仓库的内容比本地的提前,解决方法就是,去左侧的远程分支下复制当前的版本number(也就是在回退前的那个),然后回退类型为Mixed,如下所示。

在这里插入图片描述
之后,提交到本地,然后再push到远程仓库就行了。


提示:
在git中,reset head命令的reset type有三种类型,分别是soft、mixed和hard。它们各自的作用如下:

  1. Soft模式:通过使用reset head --soft参数,可以将HEAD指针移动到指定提交,但不改变工作区和暂存区的内容。这意味着,当前分支的最新提交会变为指定的提交,但工作区和暂存区的文件内容不会发生改变。这种模式适用于需要重新提交之前的修改的情况。
  2. Mixed模式(默认模式):通过使用reset head --mixed参数,可以将HEAD指针移动到指定提交,并且将工作区的内容重置为指定提交的内容,但不会改变暂存区的内容。这意味着,当前分支的最新提交会变为指定的提交,工作区的文件内容会变为指定提交的内容,但暂存区的文件内容保持不变。这种模式适用于需要撤销工作区的修改的情况。
  3. Hard模式:通过使用reset head --hard参数,可以将HEAD指针移动到指定提交,并且将工作区和暂存区的内容都重置为指定提交的内容。这意味着,当前分支的最新提交会变为指定的提交,工作区和暂存区的文件内容都会变为指定提交的内容。这种模式是最彻底的重置模式,适用于需要完全舍弃之前的修改的情况。

综上所述,这三种模式在重置HEAD指针时具有不同的影响范围,可以根据实际需求选择适合的模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红黑数原理及存在原因

我红黑树那么牛,你们为什么不用?_哔哩哔哩_bilibili 面试时经常会被问到红黑树,它到底有什么优点呢? 对于查找数据,数组二分查询速度最快,时间复杂度为O(logN)。但是如果增加和删除数据,数组就…

TikTok小店运营的三大技巧!跨境电商必看

众所周知,国内的抖音早已风生水起,抖音给了很多普通人一夜暴富的机会。而Tiktok也跟随着抖音开启了商业模式,目前流量与机会都是不可小觑的。在店铺申请通过,成功入驻之后,又该如何运营?这篇文章为大家解答…

每天一点python——day63

#第63天 #字符串的字符串的查询操作字符串的查询操作方法 如图 我们可以把字符串看做是关于字符的列表 所以字符串与列表查的操作是非常相似的 区别在于 当我们获得字符串中指定子串索引的时候除了index()方法,还有如上图所示的rindex&#x…

得帆云iPaaS白皮书|WMS集成,打造高效规范的仓储管理业务生态

仓储管理,在传统企业运作中往往是比较容易被管理者忽视的一个部分,部分管理者认为仓库只是放货的场所,能正常出入库即可。 而随着企业信息化的不断发展,越来越多的企业意识到仓储管理与生产、销售、发货有着密切的联系&#xff0…

使用STM32微控制器进行 Blink LED

在嵌入式系统开发中,点亮一个简单的 LED 是入门级的练习。通过使用STM32微控制器,我们可以通过 GPIO 控制来实现Blink LED的功能。本文将介绍如何在STM32微控制器上利用CubeMX和HAL库来实现Blink LED的功能。 一、 硬件准备 首先,确保你有一…

Java连接数据库并查询表中的全部数据

1、导入相关jar包 这里创建简单的maven项目&#xff0c;我们导入相关的jar包 相关依赖&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependenc…

操作系统实验--进程调度算法的模拟代码

代码如下&#xff0c;运行了没问题&#xff01; #include<stdio.h> #include<stdlib.h> #define getpch(type) (type*)malloc(sizeof(type)) struct pcb {char name[10];char state;int nice;int ntime;int rtime;struct pcb* link; }*readyNULL, *p; typedef str…

怎样选择金鸣识别中的输出选项(网页版)?

本操作适合金鸣表格文字识别程序的网页版&#xff08;新版&#xff09;。 表格识别&#xff1a; excel(xlsx)&#xff1a;将需识别的图片转换成编辑的xlsx格式&#xff0c;此格式仅支持excel2007以上版本或wps打开。 excel(xls)&#xff1a;将需识别的图片转换成编辑的xls格式…

虚幻引擎:如何进行关卡切换?

一丶非无缝切换 在切换的时候会先断开连接,等创建好后才会链接,造成体验差 蓝图中用到的节点是 Execute Console Command 二丶无缝切换 链接的时候不会断开连接,中间不会出现卡顿,携带数据转换地图 1.需要在gamemode里面开启无缝漫游,开启之后使用上面的切换方式就可以做到无缝…

‘vite‘ is not recognized as an internal or external command

标题翻译后就是&#xff1a;‘vite‘ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文 运行一个由 Vite 构建的 Vue3 项目&#xff0c;之前还好好的能正常跑&#xff0c; 但拉取新代码之后再次执行 npm run dev 就提示 ‘vite’ 不是内部或外部命令&#xff0…

C语言--结构体(内容超级详细)

一.前言 通过数据类型来定义一个一个的变量,当需要很多相同类型的变量时有数组。基本数据类型在使用时 很方便,但是利用它们来描述现实世界就显得捉襟见肘。例如需要保存一个班学生的信息”姓名,年龄,分 数”,按照前面的学习需要单独定义三个数组,一个保存姓名,一个保存年龄,一…

台式电脑怎么无损备份迁移系统到新硬盘(使用傲梅,免费的就可以)

文章目录 前言一、想要将源硬盘上的系统原封不动地迁移到新硬盘上二、准备工作2.具体步骤 总结 前言 半路接手公司一台台式电脑&#xff0c;C盘&#xff08;120g&#xff09;爆红&#xff0c;仅剩几个G&#xff0c;优化了几次&#xff0c;无果后。准备换一个大一点的增到500g。…

【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】

文章目录 T32MARM 介绍Trace32 .t32 和 .cmm 差异veloce 下启动TRACE321.1.3 TAP 状态机操作命令1.1.3.1 IDCODE&#xff08;Identification Code&#xff09;寄存器 介绍 T32MARM 介绍 T32MARM 是 Lauterbach 的 Trace32 软件包的一部分&#xff0c;专门用于 ARM 基础架构的微…

kubernetes集群编排(6)

目录 k8s调度 nodename nodeselector nodeaffinity podaffinity podantiaffinity Taints cordon、drain、delete k8s调度 nodename [rootk8s2 node]# vim nodename.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: n…

Markov Chain Fingerprinting to Classify Encrypted Traffic 论文笔记

0.Abstract 在本文中&#xff0c;提出了用于SSL/TLS会话中传输的应用程序流量的随机指纹。这个指纹基于一阶齐次马尔可夫链&#xff0c;模型识别应用程序的准确率&#xff0c;并提供了检测异常对话的可能性。 1.Introduction 通过SSL/TLS会话时的头部信息创建统计指纹&#xff…

贝塞尔曲线和曲面原理

文章目录 贝塞尔曲线1.伯恩斯坦多项式法2.德卡斯特里奥算法&#xff08;de Casteljau Algorithm&#xff09; 贝塞尔曲面实验结果 贝塞尔曲线 给出一系列点&#xff08;一般称为控制点&#xff09;&#xff0c;贝塞尔曲线可以利用这些点得到一个平滑的曲线&#xff0c;贝塞尔曲…

机器学习模型,超级全面总结!

机器学习是一种通过让计算机自动从数据中学习规律和模式&#xff0c;从而完成特定任务的方法。按照模型类型&#xff0c;机器学习可以分为两大类&#xff1a;监督学习模型和无监督学习模型。 附注&#xff1a;除了以上两大类模型&#xff0c;还有半监督学习和强化学习等其他类…

MicroStation二次开发问题记录(1):打开项目时自动加载dll文件

环境配置 Windows10 MicroStation CE Update16 Visual Studio 2019 前言 开发好的dll文件若每次都需要在打开MS时单独加载&#xff0c;则过于繁琐&#xff0c;因此可以在确定的工程项目文件中进行一次设置&#xff0c;在打开该文件时自动加载 一、加载dll文件 1. 点击File—Se…

计算机找不到MSVCR120.dll,MSVCR120.dll丢失的三种解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“MSVCR120.dll丢失”。这个错误通常出现在运行某些程序时&#xff0c;导致程序无法正常启动。那么&#xff0c;如何解决MSVCR120.dll丢失的问题呢&#xff1f;小编将详细介绍解决方法&#…

Luatos Air700 改变BL0942串口波特率

LuatOs 改变模块串口波特率思路参照 luatos 改变AIR530串口波特率 BL0942默认串口波特率可以通过SCLK_BPS引脚接3.3V电源设置到9600bps 但如果调整到38400bps需要修改0x19寄存器 bl0942 v1.06版的特殊寄存器说明&#xff0c;注意早期版本特殊寄存器说明存在错误 完整代码 -- L…