IDEA git操作技巧大全,持续更新中

作者简介

目录

1.创建新项目

2.推拉代码

3.状态标识

5.cherry pick

6.revert

7.squash

8.版本回退

9.合并冲突


1.创建新项目

首先我们在GitHub上创建一个新的项目,然后将这个空项目拉到本地,在本地搭建起一个maven项目的骨架再推上去,全流程走一下一个项目从0开始如何托管给git,后文的操作也会基于该项目上来演示。

首先我们在GitHub上创建一个新的仓库:

在IDEA上把项目拉到本地,拉代码的时候需要进行身份验证,输入自己的用户名密码即可:

在拉下来的目录下手动建一个maven项目,按照maven项目的结构新建好项目结构,这里省略去了test文件夹和resource文件夹,各位需要的话也可以自己加上去:

pom.xml示例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>IdeaGitDemo</artifactId><version>1.0-SNAPSHOT</version></project>

然后将该项目变成maven项目:

然后将项目push到远端仓库上即可。

2.推拉代码

在IDEA的右上角有git推拉的选项。

3.状态标识

绿色的新加还未commit的,蓝色表示有所改动但还未commit的。

双击想要查看的某一次commit的某一个文件,会弹出当前版本和上一个版本之间的比较面板:

比较面板里支持一些快捷操作:转跳上一处不同、转跳下一处不同,定位到该文件的源文件。

5.cherry pick

当我们想合并某一些提交,而不是合并两个分支的时候,可以用到cherry pick。

举一个使用场景的例子:

当我们有一个主分支main,然后基于main拉出来两条开发分支Dev_A和Dev_B,两个开发团队在这两条分支上各自在开发不同的功能。在开发过程中Dev_A的开发团队发现了main上的一个bug,然后在自己这条开发分支上修复了这个bug。这时候由于两条开发分支都没有完成,不可能直接将Dev_A合并到任何分支上,只能将修复bug的那一次提交合并到各个分支上,这时候就可以用cherry pick。

比如这个时候,Dev_A上有master内容的bug修复,但是后续又有新开发的内容的提交,要是直接将Dev_A分支合并到main上会将未完成测试的不稳定内容合并到main上去,从而扰乱整个main分支。如果将这个bug修复直接合并到其它开发分支上去,会扰乱其它分支正在进行的正常开发。

这时候切到main分支,,然后将修复bug那一次提交,cherry pick到main分支上:

这时候bug修复的那一次提交已经到main分支上来了,将main分支push上去即可:

6.revert

在实际开发中可能会有这样的情况:

某一段代码在某一个时刻被我们重写了,然后过了没多久客户有个需求变动进来了,发现还是基于原来的代码更好做新的需求。这时候就要求我们把这一段代码回退到上个版本。

很明显是不可能用版本号来将整个代码版本回退到某个版本的,因为其它文件并不需要回退,只有当前的一段代码需要回退。这时候就需要用到revert。revert指令可以将某一个文件回退到指定版本:

revert后回退的文件肯定会和当前文件存在冲突,这时候就需要手动合并冲突:

合并完冲突后,IDEA会自动生成一个标准revert的commit message,commit然后推上服务器即可:

7.squash

在实际开发中我们可能经常会遇见这样的情况:

一个文件刚刚修改完,发现没改对或者没改完,于是又继续修改,继续提交,然后提交里面一大串连续的散碎提交,这时候为了不让log看起来很乱,可以考虑合并多个commit:

首先点要合并的提交里面最早那个,选择从此处开始重构基础:

选择该节点向上的所有节点,squash into,除第一项外后面的所有都选择为squash:

(博主在操作这一步的时候忘了截图,盗了其它地方的一张图,做个示例)

start rebasing:

重新输入commit message。

continue rebasing后可以看到多条提交记录合成了一个:

8.版本回退

该块内容有点多,作为一个章节来不太好聊明白,博主会在接下来的几篇文章中单独写一篇该块内容。写好后会持续更新到本文中,以超链接的方式放到此处来,欢迎大家持续关注~

9.合并冲突

该块内容有点多,作为一个章节来不太好聊明白,博主会在接下来的几篇文章中单独写一篇该块内容。写好后会持续更新到本文中,以超链接的方式放到此处来,欢迎大家持续关注~

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

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

相关文章

【KingbaseES】银河麒麟V10 ARM64架构_安装人大金仓数据库KingbaseES_V8R6(CentOS8)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

焕新古文化传承之路,AI为古彝文识别赋能

目录 1 古彝文与古典保护 2 古文识别的挑战 2.1 西文与汉文OCR 2.2 古彝文识别难点 3 合合信息&#xff1a;古彝文保护新思路 3.1 图像矫正 3.2 图像增强 3.3 语义理解 3.4 工程技巧 4 总结 1 古彝文与古典保护 彝文指的是云南、贵州、四川等地的彝族人使用的文字&am…

十九,镜面IBL--BRDF积分贴图

再回顾下镜面部分的分割求和近似法 现在关注第二部分 最后可化为 也就是说&#xff0c;这两部分积分可以获得F0的系数和F0的偏差。 这两个值可以存储到BRDF积分贴图的RG部分。void main() { vec2 integratedBRDF IntegrateBRDF(TexCoords.x, TexCoords.y); FragColor …

驱动开发:STM32F7控制AD5663模拟量输出

AD5663是ADI公司的一款DAC模块&#xff0c;用以实现两路模拟量信号输出。该芯片通过SPI通信来驱动。下面讲解使用STM32F7主控芯片来控制AD5663模拟量输出的流程。 配置STM32F7 SPI通信管脚 STM32CubeMX生成SPI驱动代码 /* SPI3 init function */ void MX_SPI3_Init(void) {/*…

【数据代理+事件处理+计算属性与监视+绑定样式+条件渲染】

数据代理事件处理计算属性与监视绑定样式条件渲染 1 数据代理1.1 回顾Object.defineProperty方法1.2 数据代理 2 事件处理2.1 绑定监听2.2 事件修饰符2.3 键盘事件 3 计算属性与监视3.1 计算属性3.2 监视属性(侦视属性)3.3 watch对比computed 4 绑定样式4.1 绑定class样式4.2 绑…

区块链3.0时代 基于GoMars构建的新概念TravelFi能否注入新力量?

区块链技术进入3.0时代 后疫情时代&#xff0c;全球数字化进程不断加快&#xff0c;世界范围内的移动通信、互联网技术及各类数字化应用的社会普及率也正在快速提升&#xff0c;疫情推动了互联网经济的增长&#xff0c;也让数字经济的价值开始显现。 数字经济一词的由来至今已经…

代码随想录 Day8 栈(FILO)与队列(FIFO) LeetCode T232 用栈实现队列 LeetCodeT225 用队列实现栈

题目详细思路来自于:代码随想录 (programmercarl.com) 栈和队列都是大家不陌生的数据结构,我们之前的栈和队列一般是用数组或链表来实现的 , 这里我们给出实现方式,用于帮助更好的理解. 1.用链表实现栈 /* 基于链表实现的栈 */ class LinkedListStack { private ListNode sta…

Vue3之Suspense

<Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异步依赖项解析完成&#xff0c;并可以在等待时渲染一个加载状态。 我们可以看到官网并不推荐我们使用它&#xff0c;目前仍处于测试中。 他用于加…

VUE2项目:尚品汇-axios二次封装请求以及VUEX的状态管理库

上一篇&#xff1a;VUE2项目&#xff1a;尚品汇VUE-CLI脚手架初始化项目以及路由组件分析&#xff08;一&#xff09; 目录 axios二次封装API接口管理与解决跨域API接口管理nprogress进度条配置 VUEX状态管理库三级分类动态背景颜色防抖三级联动跳转路由分析 axios二次封装 项…

windows系统查看exe程序的依赖dll并拷贝到指定路径下

脚本 echo off REM windows_copy_depends.bat是脚本文件名&#xff0c;exe_path是exe文件的全路径&#xff0c;dll_folder_path是脚本当前路径下的文件夹名称 REM 如windows_copy_depends.bat E:\git_code\windows_docker_desktop\winget.exe 123 echo Usage: windows_copy_dep…

Kafka收发消息核心参数详解

文章目录 1、从基础的客户端说起1.1、消息发送者主流程1.2、消息消费者主流程 2、从客户端属性来梳理客户端工作机制2.1、消费者分组消费机制 1、从基础的客户端说起 Kafka提供了非常简单的客户端API。只需要引入一个Maven依赖即可&#xff1a; <dependency><groupId…

《大师级引导-应对困境的工具与技术》读书笔记1

《大师级引导-应对困境的工具与技术》这个书&#xff0c;十分不错&#xff0c;教练和非教练都可以学习。下面是其中的关于冲突的处理&#xff1a; 定义&#xff1a;双方以解决冲突、说明关系为目的而进行的积极的、具有建设性的对话。 目的&#xff1a;制定双方协议&#xf…

《CTFshow-Web入门》10. Web 91~110

Web 入门 索引web91题解总结 web92题解总结 web93题解 web94题解 web95题解 web96题解 web97题解 web98题解 web99题解总结 web100题解 web101题解 web102题解 web103题解 web104题解 web105题解总结 web106题解 web107题解 web108题解 web109题解 web110题解 ctf - web入门 索…

锚框_的标定

一、查漏补缺、熟能生巧&#xff1a; 1.关于fix.axis.add_patch在原来图像的坐标系同添加 边框的函数的使用&#xff1a; 2.torch.arange( h , device)生成tensor的等差数组: 3.torch.T&#xff08;&#xff09;就是transpose转置操作的函数咯: 4.torch.repeat操作&#xff0c…

【Axure高保真原型】3D圆柱图_中继器版

今天和大家分享3D圆柱图_中继器版的原型模板&#xff0c;图表在中继器表格里填写具体的数据&#xff0c;调整坐标系后&#xff0c;就可以根据表格数据自动生成对应高度的圆柱图&#xff0c;鼠标移入时&#xff0c;可以查看对应圆柱体的数据……具体效果可以打开下方原型地址体验…

Springboot+vue的在线试题题库管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的在线试题题库管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的在线试题题库管理系统&#xff0c;采用M&…

javaSwing销售管理

​ 目录 一、选题背景 近几年来&#xff0c;传统商业与电商似乎是水火不容&#xff0c;大有不是你死便是我活的劲头。一直以来舆论都是一边倒的电商将迅速取代传统零售的论调&#xff0c;然而几年过去&#xff0c;电商的发展确实值得侧目&#xff0c;但传统商业虽然受到不小的…

性能压力测试的定义及步骤是什么

在今天的数字化时代&#xff0c;软件系统的性能和稳定性对于企业的成功至关重要。为了确保软件在高负载和压力情况下的正常运行&#xff0c;性能压力测试成为了不可或缺的环节。本文将介绍性能压力测试的定义、步骤。 一、性能压力测试的定义和目标 性能压力测试是通过模拟实际…

网络工程师学习中但是发现这个岗位非常卷怎么办

大家好&#xff0c;我是网络工程师成长日记实验室的郑老师&#xff0c;您现在正在查看的是网络工程师成长日记专栏&#xff0c;记录网络工程师日常生活的点点滴滴 有个同学说&#xff0c;他说现在有很多培训机构搞的这个网络工程师也非常卷。他现在还没有入行&#xff0c;他现在…

指定vscode黏贴图片路径(VSCode 1.79 更新)

指定vscode黏贴图片路径(VSCode 1.79 更新) 设置中搜索"markdown.copyFiles.destination" 点击AddItem,配置你的key-value&#xff0c;完成。