IDEA中如何使用Git——图文超详细,包会

article/2025/10/22 9:56:34

1、IDEA中配置Git

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

2、IDEA中使用Git

2.1拉取项目

选择File→New→Project from Version Control

实际工作中拉取的项目可能存在于公司搭建的GitLab中,我们这里从码云拉取,道理都是一样的。

复制此项目的git地址,填入URL,Directory是项目在你本地的地址,然后点击Clone即可。

打开它

2.2 选择正确的分支

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

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

2.3 代码提交到暂存区

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

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

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

然后右键项目,选择Git→ Commit

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

2.4 更新代码

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

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

更新时有两种方式:

  1. Merge incoming changes into the current brance
  2. Rebase the current branch on top of incoming changes

两种方式我们通过图的形式来分析一下:

你和同事在同一个

Merge

看一下实际项目中的情况,最后会形成一个新的 commit 提交

Rebase

Merge具有更高的可追溯性,而Rebase则更整洁且易于审核。

2.5 推送代码

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

调出界面后,排查没问题Push即可。

2.6 撤销提交

上一步说到排查没问题再Push,那如果有问题在Version Control的Log中可以看到刚刚Commit的记录

右键这条日志,可以选择撤销或者编辑提交信息

选default就可以

然后修改重新提交即可。【需要注意的是撤销当前分支最后一次提交】

2.7 储藏改变

场景:

1、代码没有commit,但是需要pull代码

2、代码没有commit,但是需要切分支

右键Git → Stash Changes

这样就可以把本地的改动藏起来

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

2.8 撤销推送

【方法一】比如我这里新增学科类,Commit

然后推送到远程仓库了

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

但是这个时候只是本地,不会影响到远程仓库,我们还需要做一次推送

然而你发现啥都没有,此时我们需要强推

查看远程仓库推送记录,刚刚的记录已经不在了。

而我们的代码在上述撤销提交中也提到了,改变的代码还是在的,不用担心

【方法二】

我们先把刚刚的改动代码再次Commit、Push。查看日志,我们想把第一条记录撤销,那么也就意味着版本回到第二条记录的位置

右键第二条记录,选择 Reset Current Branch...

此时会出现四个选项

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

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

2.9 合并分支

首先Checkout到目标分支,然后选择想合并的分支右侧三角符,选择Merge或者Rebase

3、扩展

3.1 代码冲突

代码合并过程中避免不了有冲突的情况,实际项目中也存在有代码合丢了的情况,个人愚见:

一两行简单的冲突,喊同事一起看一看取舍一下即可。

复杂一点的冲突,建议把自己的代码复制一份出来,然后选择接受别人的,防止把别人的代码冲丢了,再使用代码比对工具将复制出来的代码与IDEA中的对比解决。

3.2 Commit Message

简明扼要的概括一下此次Commit的内容,附一张开源项目的图:


http://chatgpt.dhexx.cn/article/qIHX0mIy.shtml

相关文章

模块化开发-概念篇

介绍 模块化可以说是当下最重要的前端开发范式之一,它随着前端应用的日益复杂,项目代码已经逐渐膨胀到了不得不花大量时间去管理的程度了。而模块化呢就是一种最主流的代码组织方式它通过把我们的复杂代码按照功能的不同划分为不同的模块,单…

Android模块化开发架构

模块化开发架构 为什么使用模块化架构开发方式 在项目组开发过程中,一个项目业务有很多,每个成员都负责一部分业务开发,这个时候业务代码全部都糅杂在一起,不管是后面维护和代码阅读,都是很困难的,这个时候…

Vue的模块化开发

一、为什么需要模块化 客户端需要完成的事情越来越多,代码量也是与日俱增。 为了应对代码量的剧增,我们通常会将代码组织在多个js文件中,进行维护。 但是这种维护方式,依然不能避免一些灾难性的问题。 比如小明和小丽在不同的JS文…

小程序模块化开发

文章目录 1. 模块模块的定义和使用:注意 2. 模板模板的定义和使用:定义 使用注意 1. 模块 模块的定义和使用: module.exports {welcome: welcome }var welcome require(../utils/welcome.js) Page({data: {},onLoad: function() {…} })…

Android 模块化开发

概述 单独开发每个模块,用集成的方式把他们组合起来,拼出一个app。如通用的模块,自动更新的模块,反馈模块,推送模块都可以单独以模块来开发,最后进行集成。我们可以通过一个壳来包含很多个模块。 好处 可…

什么是前端模块化?前端模块化开发到底有无必要

转自:http://www.jianshu.com/p/e422c28e2471 序: 所谓前端开发,就是前台,常见的包括几个端:PC、pad、手机、其他智能设备,可以跑浏览器的地方就是我们前端人大施拳脚的乐土。自从node的问世,现在不光可以在…

什么是模块化开发?

什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.js,MVC,MVVM等…

深入理解JavaScript模块化开发

前言: 随着JavaScript应用程序的复杂性不断增加,模块化开发成为了一种必备的技术。通过将代码划分为模块,我们可以提高代码的可维护性、可重用性和可扩展性。在本文中,我们将深入探讨JavaScript模块化开发的概念、优势和不同的模块…

细说前端模块化开发

一、模块化概述 模块化开发是当下最重要的前端开发范式之一。随着前端应用的日益复杂,我们的项目代码已经逐渐膨胀到了不得不花大量时间去管理的程度了。模块化就是一种最主流的代码组织方式,它通过把我们的复杂代码按照功能的不同,划分为不…

模块化开发简述

模块化开发简述 都说模块化开发为前端发展带来了巨大的进步,然而不熟悉的人看着也是两眼一懵,那其实这到底是什么?好处在哪?我来说说自己的见解吧。 1. 模块化和传统开发的区别 实话讲,其实在我看来,两…

什么是模块化?模块化怎么实现?

什么是模块化?模块化怎么实现? 前言 : 增加印象,留下脚印 ,忘记还可以翻一翻 奥利给。 1,什么是模块化 公司里一个项目是有很多程序员一起开发的,例如 “多人运动” 这个项目 有程序员a &…

vue 模块化开发

1、npm install webpack -g 全局安装 webpack 2、npm install -g vue/cli-init 全局安装 vue 脚手架 3、初始化 vue 项目; vue init webpack appname:vue 脚手架使用 webpack 模板初始化一个 appname 项目 4、启动 vue 项目; 项目的 p…

Android模块化开发

模块化开发项目搭建 1.为什么要模块化开发 随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样发展下去单一工程下的APP架…

vue模块化开发

1.前端代码化雏形和CommonJS JavaScript原始功能 在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或者动画实现,代码量比较少,只要写在script标签里面就可以了 随着ajax异步请求的出现,慢慢形成了前…

模块化编程

1.一般编程方式:所有函数放在“.c”文件里。 (缺点:若使用的模块功能比较多, 则一个文件内会有很多的代码, 不…

一次跟你说清楚,什么是组件化开发?什么是模块化开发?

网上有许多讲组件化开发、模块化开发的文章,但大家一般都是将这两个概念混为一谈的,并没有加以区分。而且实际上许多人对于组件、模块的区别也不甚明了,甚至于许多博客文章专门解说这几个概念都有些谬误。 想分清这两个概念我觉得结合一下软件…

前端模块化开发

前端模块化开发 什么是模块化? 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元 编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成…

模块化开发

模块化开发 1. 模块化开发最终的目的是将程序划分成 一个个小的结构 。 2. 这个结构中编写属于 自己的逻辑代码 ,有 自己的作用域 ,定义变量名词时不会影响到其他的结构。 3. 这个结构可以将自己希望暴露的 变量、函数、对象等导出 给其结构使用&#xf…

HttpClient CloseableHttpClient GetMethod PostMethod http

pom依赖 <!--HttpClient的依赖--><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><!--CloseableHttpClient的依赖--><de…

JAVA小工具-05-HttpClient/PostMethod上传文件(解决中文文件名乱码问题)

言于头:本节讨论的是在项目中利用HttpClient/PostMethod相关api进行上传文件操作时&#xff0c;会出现上传中文文件名乱码问题。为解决这个问题&#xff0c;下面是总结的一个HTTP工具类以及测试用例。 public class HttpUtils {public static final String UTF_8 "UTF-8&…