Git——IDEA中的使用详解

目录

  • Git
    • 1、IDEA中配置Git
    • 2、将本地项目推送到远程仓库
      • 2.1、创建项目远程仓库
      • 2.2、初始化本地仓库
      • 2.3、连接远程仓库
      • 2.4、提交到本地仓库
      • 2.5、推送到远程仓库
    • 3、克隆远程仓库到本地
    • 4、基本操作
      • 4.1、代码提交到暂存区
      • 4.2、暂存区代码提交到本地库
      • 4.3、推送到远程仓库
      • 4.4、撤销本地提交
      • 4.5、撤销远程推送
        • 1、方式一 Revert
        • 2、方式二 Reset
      • 4.6、更新代码
      • 4.7、暂存修改
    • 5、分支操作
      • 5.1、选择分支
      • 5.2、新建分支
      • 5.3、比较分支
      • 5.4、合并分支
      • 5.5、删除分支
    • 6、解决代码冲突
    • 7、常用快捷键

Git

1、IDEA中配置Git

选择File→Settings打开设置窗口,找到Version Control下的Git选项,然后配置Git路径。如果Git安装在默认路径下,IDEA可以自动找到。选择路径后点击右侧Test,出现版本号提示即可【由于IDEA版本问题,提示的方式可能不一致】。

在这里插入图片描述

2、将本地项目推送到远程仓库

2.1、创建项目远程仓库

这个使用GitHub位例,创建仓库spring_boot_test。如下图所示:

在这里插入图片描述

在这里插入图片描述

2.2、初始化本地仓库

创建完远程仓库之后,还要通过 IDEA 开发工具来初始化一个本地仓库,相比于 Git Bash 这样的命令行来说,IDEA 非常方便可以进行可视化的 Git 管理。

如下图所示,在工具栏中的 VCS,鼠标光标移动到 Import Version Control -> Create Git Repository,点击 Create Git Repository。

在这里插入图片描述

点击 Create Git Repository 之后,弹出一个小窗口,选择要初始化的本地项目。这里就以打开的项目 spring_boot_test 为例,对 spring_boot_test 进行 Git 本地初始化。

在这里插入图片描述

2.3、连接远程仓库

初始化本地仓库,并且创建完远程仓库项目之后,下一步就需要将本地和远程进行对接交互了。那么在交互之前,肯定是要进行建立连接的,就像打电话之前先呼号建立通话连接一样,之后再进行信息交换。

工具栏 VCS -> Git -> Remotes,点击 Remotes 添加远程仓库连接信息。

在这里插入图片描述

添加 Remote,输入 Name 和 URL,这里的 Name 如果没有特殊设置就是按照默认的 origin 来,也是 IDEA 自动补全的,建议在创建远程项目的时候不要轻易修改,这里的 URL 就是在远程项目信息中可以看到,我就不放出来了。

之后弹出一个登录的窗口,输入自己在GitHub注册的账号和密码即可,然后点击 Log In.

验证通过之后,Git Remotes 中便出现了远程项目的 Name 和 URL,最后点击 OK,这样就正式连接远程仓库项目了。
在这里插入图片描述

2.4、提交到本地仓库

在工具栏中,点击绿色的图标,表示 commit 到本地仓库。

  • 弹出一个 Commit Changes 窗口,然后,选择我们的项目 redis-demo,会自动选中项目中的有变化的文件,第一次 commit 整个项目,会把所有项目文件进行 commit.
  • 一般地,在 commit 操作之前,需要仔细查看每个文件细节内容,避免因为鼠标键盘无意按压动作导致对代码文件带来非本意的修改,这是要养成的习惯。
  • 在 commit Message 中填入提交记录说明,最后点击右下角的 commit,提交项目 redis-demo 到本地仓库。

在这里插入图片描述

如果项目存在 warnings,即使项目没有错误可以正常运行,IDEA 还是会给出提示,询问是否要 review 一下,这里我直接忽略,直接 Commit 提交即可。

在这里插入图片描述

提交完成之后,在 IDEA 界面下边信息提示栏中,Log 日志选择 Version Control,可以看到提交记录,表示提交成功。

在这里插入图片描述

2.5、推送到远程仓库

推送项目到远程仓库,按照下图操作即可。在 push 之前需要对每个文件内容进行检查,避免因为鼠标键盘无意按压动作导致对代码文件带来非本意的修改。推送成功之后,可以在 IDEA 中看到提示信息,也可以在远程仓库中查看结果。

在这里插入图片描述

在这里插入图片描述

3、克隆远程仓库到本地

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、基本操作

4.1、代码提交到暂存区

拉取代码后开始工作,比如这里我们修改了一些类中的代码,又新增了一些类。但是这个红色的要引起注意。

在这里插入图片描述

右键项目,选择Git→ Add 将文件信息加到暂存区。

在这里插入图片描述

此时可以看到刚刚的Teacher类变为绿色了。

在这里插入图片描述

4.2、暂存区代码提交到本地库

第一种方式,右键项目,选择Git→ Commit:
在这里插入图片描述

第二种方式,点击菜单栏Git旁边绿色对号:
在这里插入图片描述

选择我们想要提交的文件,填写提交信息,然后Commit,主要用于将暂存区里的改动内容提交到本地仓库中。

在这里插入图片描述

4.3、推送到远程仓库

右键选择Git→ Repository→ Push 或者快捷键 Ctrl+Shift+K

在这里插入图片描述

调出界面后,排查没问题Push即可:
在这里插入图片描述

4.4、撤销本地提交

如果我们再提交到本地仓库后,推送到远程仓库之前,发现提交的代码有错误,此时可以撤销本地提交:

在这里插入图片描述

在日志中右键点击需要撤销的记录,选择undo Commit即可:
在这里插入图片描述

选default就可以:

在这里插入图片描述

此时Commit已经撤销,查看状态发现修改的文件已经回到暂存区:

在这里插入图片描述

4.5、撤销远程推送

如果在推送到远程仓库后,发现代码有误,也可以撤销。

1、方式一 Revert

例如我们修改了代码,然后推送到了远程仓库:
在这里插入图片描述

在这里插入图片描述

查看远程仓库,发现已经推送成功:
在这里插入图片描述

这个时候发现推送错了,可以在Version Control的Log中选中想撤销的记录,选中Revert Commit:

在这里插入图片描述
在这里插入图片描述

但是这个时候只是本地,不会影响到远程仓库,我们还需要做一次推送:
在这里插入图片描述

查看远程仓库:
在这里插入图片描述

2、方式二 Reset

再次修改代码,并提交到远程仓库:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此时查看日志,如果我们想把第一条Commit撤销,那么也就意味着回到第二条Commit的位置
在这里插入图片描述

右键第二条记录,选择 Reset Current Branch…在这里插入图片描述

此时会出现四个选项:

在这里插入图片描述

  • Soft:暂存区【Add后】和你本地改动代码都在,新增的文件你会发现它是绿色
  • Mixed:本地改动代码在,暂存区没有了,你刚刚新增的文件是红色了
  • Hard:在选择的回退点之后的所有更改都会被丢弃(包括未提交和已提交的文件)。这种方式会删除回退点之后的所有文件,影响巨大,除非真的有此需要,否则不推荐使用。
  • Keep:在选择的回退点之后的所有已提交的更改会被丢弃,但未提交的文件会被完整地保存下来。如果真的有此需要,可以选择

选择 Soft或Mixed后强推一次就可以了。

4.6、更新代码

一般在将本地代码提交到远程仓库时,最好先更新下远程仓库的代码到本地,从而避免不必要的冲突。【养成良好的习惯,每天到公司就先更新代码】

通过IDEA的右上角更新图标,或者通过快捷键 Ctrl + T 进行拉取:

在这里插入图片描述

在这里插入图片描述

更新时有两种方式:

  • Merge incoming changes into the current brance
  • Rebase the current branch on top of incoming changes

当前情况:

在这里插入图片描述

Merge: 最后会形成一个新的 commit 提交
在这里插入图片描述

Rebase: 最后会把你的提交作为父节点延续下去
在这里插入图片描述

4.7、暂存修改

场景:

  1. 代码没有commit,但是需要pull代码
  2. 代码没有commit,但是需要切分支

右键项目->Git → Repository->Stash Changes

在这里插入图片描述

这样就可以把本地的改动暂存起来:
在这里插入图片描述

pull完代码后再通过Unstash Changes把藏起来的代码释放出来:

在这里插入图片描述

5、分支操作

5.1、选择分支

实际项目中会存在很多分支,那我们需要拉取正确的分支来进行开发,在IDEA的右下角可以选择,默认是master分支。

在这里插入图片描述

想要哪个分支直接Checkout即可。

5.2、新建分支

在实际项目开发过程中,当遇到一个需求时,我们并不会直接就在主分支(master)上面进行开发,而是在主分支的基础上单独创建一个新的分支进行开发,当新建分支的代码经过代码评审以及测试验证通过,确认准确无误之后才会将新增的代码合并到主分支master,这才是一个规范的git操作流程。

因此,必须要掌握新建分支的过程,那么创建一个分支的过程如下图所示:

1、首先,单击 “Remote Branches” 下的 “origin/master” 分支,单击选择 “New Branch from Selected…”

在这里插入图片描述

2、其次,弹出对话框,输入你要新建的分支名称。例如,feature-1.1.0,单击“Checkout”,表示创建该分支同时切换到 feature-1.1.0 分支。

在这里插入图片描述

然后,创建分支 feature-1.1.0 成功之后,可以在 “Local Branches” 下看到此时有两个分支分别为feature-1.1.0 和 master,这表明本地仓库中已经有了新建的分支了。

在这里插入图片描述

3、但是 “Remote Branches” 下依然只有一个 master 分支,表明在我们的远程仓库依然只有一个master 分支,因此我们还需要把在本地仓库新建的分支推送到远程仓库中,这样就可以在远程仓库中看到新建的分支了。

单击 feature-1.1.0 ,然后在左边单击 “Push” ,弹出推送对话框。单击 “Push” 推送到远程仓库,这样分支新建操作彻底完成,可以看到在"Remote Branches"分支下面出现了“feature-1.1.0”,我们可以在该分支进行编码并进行拉取和推送操作。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3、比较分支

分支比较就是对比不同分支之间的差异。例如,需要比较当前所在分支与 master 分支之间的差异,可以选择需要对比的 master 分支,然后单击 “Compare with Current”,在弹出的窗口可以看到具体的差异。

先修改一下feature-1.1.0分支:

在这里插入图片描述

然后和master分支比较:
在这里插入图片描述

在这里插入图片描述

5.4、合并分支

合并分支是将 A 分支合并到 B 分支,A 分支称为源分支,B 分支称为目标分支。

注意事项:master 分支是我们部署在生产环境服务器的分支,master 分支的代码往往是最新的代码。通常我们有一个新的需求时不会直接在 master 分支进行实施编码,而是基于 master 分支拉出一个新的分支,在拉出来的新分支进行实施编码。只有当新分支的代码经过 code review 以及测试联调通过之后,才会将代码合并到 master 分支等待部署上线。合并分支的流程务必规范:先将 master 分支合并到新分支,之后再将新分支合并到 master 分支。 这样做的原因是因为一个项目通常由多个人负责,可能在你开发的过程中,有新的代码已经合并到 master 分支并且部署上线了,但是你拉的新分支上的代码依旧是 master 分支的老代码。所以需要先更新你拉的新分支上的代码,将其他人更新的代码合并过来,保证你拉的新分支代码与最新的 master 分支代码一致(以免因为丢失最新修改的代码而造成线上事故)之后再将你的新拉的分支代码合并到 master 分支上面。

以 feature-1.1.0 分支和 master 分支为例,将 feature-1.1.0 分支合并到 master 分支中。

1、首先,切换到 feature-1.1.0 分支,将 master 分支合并到 feature-1.1.0 分支中。单击 “Local Branches” 下的 master,选择 “Merge into Current”,这里的 Current 是指目标(feature-1.1.0)分支 ,也就是将 master 分支合并到 feature-1.1.0 分支中,合并成功之后可以看到提示。

在这里插入图片描述

2、然后,切换到 master 分支下,将 feature-1.1.0 分支合并到 master 分支。

在这里插入图片描述

在这里插入图片描述

3、最后,我们可以看到在 “Local Branches” 下的 master 分支有个绿色的小箭头,这是因为我们刚才的分支合并在本地仓库操作的,并没有将远程的 feature-1.1.0 分支合并到 master 分支中。因此,我们还需要将 master 分支推送到远程仓库,点击 Push 或者使用快捷键 Ctrl+Shift+K 推送到远程仓库即可,推送成功之后绿色提示小箭头也会消失。

在这里插入图片描述

在这里插入图片描述

5.5、删除分支

在删除分支之前,建议先切换到(Checkout)其他分支,例如,Checkout到master分支,当然这并不强制,只是为了方便删除分支而已。

1、首先,在 “Local Branches” 下单击分支 feature-1.1.0,左边弹出选项选中 “Delete”.

在这里插入图片描述

2、然后,在对话框中勾选“Delete tracking local feature-1.1.0 as well”,意思就是同时删除远程和本地仓库中的 feature-1.1.0 分支。

在这里插入图片描述

6、解决代码冲突

场景:

  1. 合并分支时
  2. 远程推送时,远程仓库版本领先于本地版本

1、修改本地代码,并提交到本地库

在这里插入图片描述

2、线上浏览器修改代码并提交

在这里插入图片描述

3、本地推送到远程库

在这里插入图片描述

因为远程库版本领先于本地库,所以推送失败
在这里插入图片描述

4、解决冲突、合并代码

可以直接选择全盘接收他人代码,也可以选择全部使用自己的代码:

在这里插入图片描述

也可以单独选择有冲突的文件,手动修改:
在这里插入图片描述

因为是注释,所以我们选择接收双方的修改:
在这里插入图片描述

然后再次推送即可成功:
在这里插入图片描述

在这里插入图片描述

7、常用快捷键

快捷键解释
Ctrl+Alt+A将文件添加到暂存区
Ctrl+K提交变化到本地仓库
Ctrl+Shift+K将本地仓库的变化同步推送到远程仓库
Ctrl+T将远程仓库的代码合并更新到本地
Ctrl+Alt+Z代码回滚

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络: 网络层

IP地址: 分为网络号和主机号. 用来标识主机 IP协议 IP协议报文 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节. 8…

HarmonyOS NEXT应用开发案例集

概述 随着应用代码的复杂度提升,为了使应用有更好的可维护性和可扩展性,良好的应用架构设计变得尤为重要。本篇文章将介绍一个应用通用架构的设计思路,以减少模块间的耦合、提升团队开发效率,为开发者呈现一个清晰且结构化的开发…

YOLOv8:Roboflow公开数据集训练模型

Roboflow公开数据集 Roboflow是一个提供计算机视觉数据集管理和处理工具的平台。虽然Roboflow本身并不创建或策划公开数据集,但它提供了一系列功能,帮助用户组织、预处理、增强和导出计算机视觉数据集。 官方网站:https://universe.roboflow…

FOCUS-AND-DETECT: A SMALL OBJECTDETECTION FRAMEWORK FOR AERIAL IMAGES

摘要 为了解决小对象检测问题,提出了一个叫做 Focus-and Detect 的检测框架,它是一个两阶段的框架。 第 一阶段包括由高斯混合模型监督的对象检测器网络,生成构成聚焦区域的对象簇 。 第二阶段 也是一个物体探测器网络,预测聚焦…

Web框架开发-Ajax

一、 Ajax准备知识:json 1、json(Javascript Obiect Notation,JS对象标记)是一种轻量级的数据交换格式 1 2 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。…

谧林涓露门禁

原神武器升级材料谧林涓露和门禁好像聂。 difference(){union(){cylinder(2, 10,10, $fn365);hull(){translate([15,0,0])cylinder(1,2,2,$fn365);cylinder(1,10,10,$fn365);}}translate([15,0,-1])cylinder(4,1,1,$fn365); }

swagger3快速使用

目录 &#x1f37f;1.导入依赖 &#x1f32d;2.添加配置文件 &#x1f9c2;3.添加注解 &#x1f96f;4.访问客户端 1.导入依赖 引入swagger3的依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artif…

智能驾驶域控制器行业介绍

汽车智能驾驶功能持续高速渗透&#xff0c;带来智能驾驶域控制器市场空间快速增 长。智驾域控制器是智能驾驶决策环节的重要零部件&#xff0c;主要功能为处理感知 信息、进行规划决策等。其核心部件主要为计算芯片&#xff0c;英伟达、地平线等芯 片厂商市场地位突出。随着消费…

【c语言】详解操作符(上)

1. 操作符的分类 2. 原码、反码、补码 整数的2进制表示方法有三种&#xff0c;即原码、反码、补码 有符号整数的三种表示方法均有符号位和数值位两部分&#xff0c;2进制序列中&#xff0c;最高位的1位是被当做符号位其余都是数值位。 符号位都是用0表示“正”&#xff0c;用…

二分算法(查找)

问题&#xff1a;在数组中查找某一个数字x4的下标 例&#xff1a;arr:1 3 4 6 10 20 21 22 显然&#xff0c;数字4的下标为3。 1、线性查找&#xff0c;一个个地去遍历&#xff0c;时间复杂度为O(n) 2、二分查找&#xff0…

国务院办公厅发布:政府类网站网页设计规范(试行)

国务院办公厅于2019年12月发布了《政府类网站网页设计规范&#xff08;试行&#xff09;》。该规范的发布旨在统一政府类网站的设计风格和标准&#xff0c;提升政府网站的用户体验和可访问性&#xff0c;推动政府信息公开和服务的提升。 该规范涵盖了政府类网站的各个方面&…

【Esp32-Cam模型训练相关问题解决方案】

Esp32-Cam模型训练相关问题解决方案 一、AttributeError: module everywhereml.data.ImageDataset has no attribute from_nested_folders现象解决方案 二、Connection to 192.168.x.xxx timed out(connect timeoutNone)三、卡在0%| |0/100 [00:00<?, ?it/s] 抛砖引玉&…

Linux之基础IO

1.C语言中的文件操作函数 文件的打开 path为文件路径&#xff0c;mode为打开方式&#xff0c;它们都是字符串。 代码演示&#xff1a; 此时&#xff0c;当前目录中并没有log.txt文件&#xff0c;但是没关系&#xff0c;fopen会在当前路径下创建log.txt文件。 简单来说&#xf…

数据分析-Pandas序列时间移动窗口化操作

数据分析-Pandas序列时间移动窗口化操作 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表…

Python3 字典

字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割&#xff0c;每个对之间用逗号(,)分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, key2 : value2, key3 : value3 } 键必…

MTransE翻译

MTransE翻译 阅读时间&#xff1a;2024.03.23 领域&#xff1a;知识图谱&#xff0c;知识对齐 作者&#xff1a;Muhao Chen等人 UCLA 出处&#xff1a;IJCAI Multilingual Knowledge Graph Embeddings for Cross-lingual Knowledge Alignment 用于交叉知识对齐的多语言知识图…

【Python】基础语法(一)

文章目录 1.注释2.关键字与标识符2.1关键字2.2标识符 3.变量4.数据类型4.1数字类型4.2类型转换函数4.3布尔类型 5.输入(input)与输出(print)5.1输入函数(input)5.2输出函数(print) 6.运算符6.1算术运算符6.2比较运算符6.3赋值运算符6.4逻辑运算符6.5运算符优先级 7.字符串7.1字…

mysql体系结构及主要文件

目录 1.mysql体系结构 2.数据库与数据库实例 3.物理存储结构​编辑 4.mysql主要文件 4.1数据库配置文件 4.2错误日志 4.3表结构定义文件 4.4慢查询日志 4.4.1慢查询相关参数 4.4.2慢查询参数默认值 4.4.3my.cnf中设置慢查询参数 4.4.4slow_query_log参数 4.4.…

官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会

摘要&#xff1a;本文整理自阿里云开源大数据平台徐榜江 (雪尽)&#xff0c;关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会&#xff0c;内容主要分为以下四部分&#xff1a; 1、Flink CDC 新仓库&#xff0c;新流程 2、Flink CDC 新定位&#xff0c;新玩法 3、Flin…

中文编程入门(Lua5.4.6中文版)第十一章 Lua 模块与包 参考星争际霸游戏

在遥远的星争际霸世界中&#xff0c;代码模块就如同星际基地中的高科技仓库&#xff0c;储存着各类经过封装优化的战术指令和战略资源。自Lua 5.1版本起&#xff0c;星际编程者们引入了标准化的模块管理系统&#xff0c;使得不同战舰之间能够共享和调用核心战斗算法&#xff0c…