【Git】学习总结
【Git】学习总结
- 【一】安装
- 【二】Git克隆项目代码
- 【1】idea下载git项目
- 【2】创建新的分支
- 【3】新建的分支推送到远程
- 【4】合并最新代码到主分支
- 【5】切换分支
- 【三】提交本地项目到远程
- 🚀1. 配置 Git
- 🚀2. 创建项目远程仓库
- 🚀3. 初始化本地仓库
- 🚀4. 连接远程仓库
- 🚀5. 提交到本地仓库
- 🚀6. 推送到远程仓库
- 🚀7. 克隆远程仓库到本地
- 🚀8. 分支操作
- 🚁8.1 新建分支
- 🚁8.2 删除分支
- 🚁8.3 比较分支
- 🚁8.4 合并分支
- 【四】回退代码
- 【1】在idea中查看提交的历史记录
- 【2】复制当前最新的版本号,以及需要回退的版本号
- 【3】执行回退操作
- 【4】提交记录中输入最新版本号
- 【5】提交到本地仓库,然后推送到远程仓库
- 【6】总结
【一】安装
【二】Git克隆项目代码
【1】idea下载git项目
idea菜单,vcs–get from Version Control

弹出的对话框中输入git地址(git地址就是从github或者gitlab这些平台上复制过来的)

点击clone

此时默认是master分支。
【2】创建新的分支
我们要创建一个新的分支,也就是拷贝一个自己操作的副本。点击上图的“master”,弹出操作菜单。
local branches是代表本地分支
Master分支是主分支,其他的自定义分支,
remote branches是代表远程分支

单击New Branch创建新的分支

输入分支名字,单击“create”。此时分支切换到新建的分支

【3】新建的分支推送到远程

如果有代码变更,要先add,再commit;commit时要求输入改动的备注;然后通过push的方式推送到远程。
如果有冲突的话就要在解决完冲突后,需要再次commit!不能直接push,否则就会把别的同事的代码覆盖掉,切记切记!

【4】合并最新代码到主分支
master分支一般为主干,大家新的修改都会合并到master,所以每次向master合并代码时,需要现将master的分支合并到当前开发分支,然后再将开发分支合并到master分支。
(1)拉取master分支
现将分支切换到master

(2)切换到master分之后,通过git pull拉取最新代码

(3)之后再切换到开发分支

(4)合并master分支到开发分支
选中master,然后merge into current,表示将master分支merge到当前分支(current)

此时开发分支(20220409_test)已经是最新代码
(5)然后重复前面的步骤,先切到master分支,将20220409_test合并到master
(6)另一种方式:在git页面操作
当代码push到git上之后,要发起分支合并请求,把分支合并到主分支上

点击要合并代码的项目,进入操作界面,继续点击merge request

new merge request

如下图,1处选择要合并的分支,就是你刚才push代码的分支,2处选择要合并到的分支,一般默认是主分支,选择完成后,点击compare branches and continue

如下图,在弹出的界面中,依次填写1、合并描述;2、选择由谁来合并,一般是项目的开发经理;3、创建合并请求。

【5】切换分支
(1)本地分支来切换
选择你要想切换到那个分支上,右击它点击checkout 来切换

注意如果这个分支已经修改过了,但是没有提交,切换时出现这种提示,会让选择是否继续切换。
1-Smart Checkout会把当前分支改动过的内容 与 要到达的分支合并(到达分支也会添加上当前分支的内容,减少的内容 将会提示合并选项)
2-Force Checkout 会把当前分支的变动取消 然后切换到想要到达的分支
如果切换分支前 把改动提交就不会有提示切换选项

【三】提交本地项目到远程
🚀1. 配置 Git
✨想要在 IDEA 中使用 Git,首先就需要在 IDEA 工具中对 Git 进行相关的配置。
✨打开 IDEA 设置,之后按照下面图片中的步骤进行操作即可。需要注意的是,在 Path Git executable 中,也就是设置 Git 可执行路径中,找到本机电脑上 Git 的安装位置,根据情况进行路径选择。例如,我这里的路径是 E:\Git\cmd\git.exe,而在 IDEA 中这里默认是 C 盘路径下的目录,这里要根据个人情况而定,不可忽视。

🚀2. 创建项目远程仓库
✨这里使用代码托管平台 Gitee 为例,进行创建远程仓库。如下图所示,新建仓库,仓库名称为 redis-demo(自定义),仓库介绍自定义没有影响,其他都按照默认设置即可,最后点击创建。

这样一个远程仓库的项目就创建完成了。
🚀3. 初始化本地仓库
✨创建完远程仓库之后,还要通过 IDEA 开发工具来初始化一个本地仓库,相比于 Git Bash 这样的命令行来说,IDEA 非常方便可以进行可视化的 Git 管理。
✨如下图所示,在工具栏中的 VCS,鼠标光标移动到 Import Version Control -> Create Git Repository,点击 Create Git Repository。

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

🚀4. 连接远程仓库
✨初始化本地仓库,并且创建完远程仓库项目之后,下一步就需要将本地和远程进行对接交互了。那么在交互之前,肯定是要进行建立连接的,就像打电话之前先呼号建立通话连接一样,之后再进行信息交换。
✨工具栏 VCS -> Git -> Remotes,点击 Remotes 添加远程仓库连接信息。

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

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

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

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

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

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

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

🚀7. 克隆远程仓库到本地


🚀8. 分支操作
🚁8.1 新建分支
在实际项目开发过程中,当遇到一个需求时,我们并不会直接就在主分支(master)上面进行开发,而是在主分支的基础上单独创建一个新的分支进行开发,当新建分支的代码经过代码评审以及测试验证通过,确认准确无误之后才会将新增的代码合并到主分支master,这才是一个规范的git操作流程。
因此,必须要掌握新建分支的过程,那么创建一个分支的过程如下图所示:
1、首先,单击 “Remote Branches” 下的 “origin/master” 分支,单击选择 “New Branch from Selected…”

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

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

4、但是 “Remote Branches” 下依然只有一个 master 分支,表明在我们的远程仓库依然只有一个master 分支,因此我们还需要把在本地仓库新建的分支推送到远程仓库中,这样就可以在远程仓库中看到新建的分支了。
单击 feature-1.1.0 ,然后在左边单击 “Push” ,弹出推送对话框。单击 “Push” 推送到远程仓库,这样分支新建操作彻底完成,可以看到在"Remote Branches"分支下面出现了“feature-1.1.0”,我们可以在该分支进行编码并进行拉取和推送操作。


🚁8.2 删除分支
在删除分支之前,建议先切换到(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 分支。

删除成功之后,出现提示信息 “Deleted Branch:feature-1.1.0”,并且可以在 Git Branches 下看到最新的分支情况。


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


🚁8.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 推送到远程仓库即可,推送成功之后绿色提示小箭头也会消失。

【四】回退代码
【1】在idea中查看提交的历史记录


除了第一条记录是创建仓库默认就有的,这条默认的消息我们不用管它,其他的全部都是提交记录。
【2】复制当前最新的版本号,以及需要回退的版本号

假设本次我需要回退到User.java这个版本,首先右键单击最新的版本(新增了d.txt),再单击Copy Revison Number(这一步是拷贝版本号)。
得到最新的版本号:3a25435cc5a74ac6d2ad9f82f8ace340e498d4d0
对User.java执行同样的操作,得到User.java这个版本的版本号:09b35d57f1bff43490f00bbaee8e269ca649e765
这一步需要得到最新的版本号以及需要回退的版本号,共2个版本号。
【3】执行回退操作


Reset Type一定要改成Hard,To Commit 这里一定要设置成需要回退的版本号。因为此时的操作相当于在命令行执行 git reset –hard 版本号
需要回退的版本号User.java:09b35d57f1bff43490f00bbaee8e269ca649e765
执行了上面的操作,此时的本地仓库就回退到了User.java这个版本。
然后再次查看提交记录,会发现提交记录,仅停留在了User.java,本地仓库也回退到了之前的版本


—————————下面不要执行—————————
出现的问题:User.java之后的提交记录全部没有了,这样会出现一个问题,如果此时直接将本地仓库推送至远程仓库,由于没有最新的版本号记录,会直接恢复到最新的版本号中的内容。

【4】提交记录中输入最新版本号
因为没有最新的版本号内容,所以将本地仓库推送至远程仓库后会直接恢复到最新仓库的内容,为了解决这个问题,我们需要在提交记录中输入最新的版本号。
在第3步输入了需要回退的版本后,还需要输入最新的版本号。

执行完成后会发现本地仓库还是User.java,但是有了User.java之后的提交记录。

【5】提交到本地仓库,然后推送到远程仓库
执行完上面的操作后,发现提交记录停留在了之前最新的版本号,但是没有回退到User.java这个操作的版本号,所以此时需要提交到本地仓库,形成一次提交记录再推送至远程仓库。
将回退到User.java这步操作提交到本地仓库

查看提交记录

生成了回退操作的提交记录,并且之前所有操作记录的版本号都存在。
远程仓库也和本地仓库内容一致:


【6】总结
(1)查看提交的历史记录,记录下最新的提交记录版本号以及需要回退的版本号
(2)在Git->Reset Head->Rest Type中输入需要回退的版本号。
(3)在Git->Reset Head->Rest Type中输入最新的版本号
(4)操作完2.3的步骤后,一定要提交到本地仓库形成一次提交记录。
(5)再推送到远程仓库即可。
相关文章:
【Git】学习总结
【Git】学习总结 【一】安装【二】Git克隆项目代码【1】idea下载git项目【2】创建新的分支【3】新建的分支推送到远程【4】合并最新代码到主分支【5】切换分支 【三】提交本地项目到远程🚀1. 配置 Git🚀2. 创建项目远程仓库🚀3. 初始化本地仓…...
手写Spring源码——实现一个简单的spring framework
这篇文章主要带大家实现一个简单的Spring框架,包含单例、多例bean的获取,依赖注入、懒加载等功能。文章内容会持续更新,感兴趣的小伙伴可以持续关注一下。 目录 一、创建Java项目 二、开始实现Spring 1、创建BeanFactory接口 2、创建Appl…...
银河麒麟服务器、centos7服务器一键卸载mysql脚本
脚本 # 查看mysql相关的rpm包写到rmsql.sh文件中 rpm -aq | grep -i mysql >rmsql.sh # 修改文件为卸载mysql的脚本文件 sed -i -e s/^/yum remove -y / rmsql.sh # 修改文本权限 chmod 777 rmsql.sh # 全盘查找mysql相关文件,写到my.sh脚本中 find / -name mysq…...
【随笔】- 程序员的40岁后健身计划
【随笔】- 40岁后程序员的健身计划 文章目录 【随笔】- 40岁后程序员的健身计划一、树立健身信心,制订坚持计划二、挑选让你舒适的方式三、调整速度,以间歇式训练为主四、刚开始锻炼,别求太快五、增加力量、柔韧性和平衡练习六、运动多样化七…...
后端项目开发:集成Druid数据源
Druid作为连接池中间件可以监控数据库访问性能,对数据库密码加密,查看SQL执行日志,扩展JDBC。 添加依赖 <!-- druid --> <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter&…...
深度学习11:Transformer
目录 什么是 Transformer? Encoder Decoder Attention Self-Attention Context-Attention 什么是 Transformer(微软研究院笨笨) RNN和Transformer区别 Universal Transformer和Transformer 区别 什么是 Transformer? …...
免费开源跨平台视频下载器 支持数百站点视频和音频下载-ytDownloader
ytDownloader: ytDownloader是一款免费开源跨平台视频下载器,帮助用户从数百个网站下载不同格式的视频和提取音频,使用简单,复制视频链接粘贴即可下载,支持4K画质视频下载,支持Linux、Windows 和 macOS平台…...
R包开发1:RStudio 与 GitHub建立连接
目录 1.安装Git 2-配置Git(只需配置一次) 3-用SSH连接GitHub(只需配置一次) 4-创建Github远程仓库 5-克隆仓库到本地 目标:创建的R包,包含Git版本控制,并且能在远程Github仓库同步,相当于发布在Github。…...
红蓝攻防:浅谈削弱WindowsDefender的各种方式
前言 随着数字技术的日益进步,我们的生活、工作和娱乐越来越依赖于计算机和网络系统。然而,与此同时,恶意软件也日趋猖獗,寻求窃取信息、破坏系统或仅仅为了展现其能力。微软Windows,作为世界上最流行的操作系统&…...
什么是响应式设计(Responsive Design)?如何实现一个响应式网页?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 响应式设计(Responsive Design)⭐ 如何实现一个响应式网页?1. 弹性网格布局2. 媒体查询3. 弹性图像和媒体4. 流式布局5. 优化导航6. 测试和调整7. 图片优化8. 字体优化9. 渐进增强10. 面向移动优先11. …...
QT之应用程序执行脚本
简介 ● Qt中的类QProcess支持在程序中另外开辟线程 ● 其中start方法支持以字符串为参数执行命令 以Linux平台为例: 方式一(后台执行) /// /// \brief MainWindow::cmdLine run a linux command with string format in the bash /// \pa…...
学习文档链接
SpringBoot Activiti 完美结合,快速实现工作流(最详细版) - 知乎 (zhihu.com) easypoi: POI 工具类,Excel的快速导入导出,Excel模板导出,Word模板导出,可以仅仅5行代码就可以完成Excel的导入导出,修改导出格式简单粗暴,快速有效,easypoi值得…...
【Java 高阶】一文精通 Spring MVC - 转换器(五)
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
【HSPCIE仿真】输入网表文件(1)基本内容和基本规则
输入网表文件 1. 输入网表文件基本内容2. 输入网表文件示例3. 一些基本规则4. 数值表示5. 压缩文件格式的读取6. 参数和表达式 从HSPICE的仿真流程看,出去初始化配置过程,真正的仿真是从输入网表文件开始的。 HSPICE 根据输入网表文件( inpu…...
IBM Db2 笔记
目录 1. IBM Db2 笔记1.1. 常用命令1.2. 登录命令行模式 (Using the Db2 command line processor)1.3. issue1.3.1. db2: command not found/SQL10007N Message "-1390" could not be retreived. Reason code: "3".1.3.2. db2 修改 dbm cfg 的时候报 SQL50…...
【Cortex-M3权威指南】学习笔记2 - 指令集
目录 指令集汇编语言基础UAL 近距离检视指令数据传输数据处理子程呼叫与无条件跳转指令标志位与条件转移指令隔离指令饱和运算 CM3 中新引入指令MRS\MSRIF-THENCBZ/CBNZSDIV/UDIVREV RBITSXTBTBB,TBH 指令集 汇编语言基础 一条简单的汇编指令格式(注释使用一个分号…...
Java——一个Java实体类,表示一个试题的模型
这段代码是一个Java实体类,表示一个试题的模型。 该实体类具有以下属性: id:题号,表示试题的编号。title:题目,表示试题的题目内容。optionA:选项A,表示试题的选项A。optionB&#…...
PHP8函数的引用和取消-PHP8知识详解
今天分享的是php8函数的引用和取消,不过在PHP官方的参考手册中,已经删除了此类教程。 1、函数的引用 在PHP8中不管是自定义函数还是内置函数,都可以直接简单的通过函数名调佣。函数的引用大致有下面3种: 1.1、如果是PHP的内置函…...
华为OD机试真题【最大利润】
1、题目描述 【最大利润】 商人经营一家店铺,有number种商品,由于仓库限制每件商品的最大持有数量是item[index] 每种商品的价格是item-price[item_index][day] 通过对商品的买进和卖出获取利润 请给出商人在days天内能获取的最大的利润 注:…...
YOLOv5+deepsort实现目标追踪。(附有各种错误解决办法)
一、YOLOv5算法相关配置 🐸这里如果是自己只想跑一跑YOLOV5的话,可以参考本章节。只想跑通YOLOv5+deepsort的看官移步到下一章节。 1.1 yolov5下载 🐸yolov5源码在github下载地址上或者Gitee上面都有。需要注意的是由于yolov5的代码库作者一直在维护,所以下载的时候需…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
