【Git】学习总结

news2024/12/24 2:30:55

【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)再推送到远程仓库即可。

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

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

相关文章

江西萍乡能源石油化工阀门三维扫描3d测量抄数建模-CASAIM中科广电

长期以来,石油天然气、石油石化、发电和管道输送行业在环保、健康和安全保障方面一直承受着巨大的压力,他们必须确保相关规程在各项作业中得到全面贯彻。 阀门作为流体管道运输中的组成部分,其装配密封度是保证流体运输安全的重要一环&#…

将AI融入CG特效工作流;对谈Dify创始人张路宇;关于Llama 2的一切资源;普林斯顿LLM高阶课程;LLM当前的10大挑战 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 将AI融入CG特效工作流,体验极致的效率提升 BV1pP411r7HY 这是 B站UP主 特效小哥studio 和 拓星研究所 联合投稿的一个AI特…

分布式锁系列之zookeeper分布式锁和mysql分布式锁

目录 介绍 下载安装 基本指令​编辑 java集成zookeeper 官方提供版 永久节点 临时节点​编辑 永久序列化节点 判断当前节点是否存在 获取当前节点中的数据内容 获取当前节点的子节点 更新节点内容 删除节点 zookeeper实现分布式锁 Mysql实现分布式锁 总结 介绍 ZooK…

关于stm32推挽带有上下拉电阻的思考、IO口驱动能力是什么

1、发现推挽带有上下拉电阻 1.1、stm32手册 记忆中推挽是不需要上下拉的,没关注过,但是我真的理解上下拉吗,下图来自stm32f4的中文版和英文版的数据手册,没有翻译错,就是“推挽带有上下拉的能力”。 1.2、查找相关信…

tomcat8的安装和部署启动jpress应用

首先准备tomcat,jdk,jpress安装包 一. tomcat8的安装 1. 使用xftp等工具将软件包上传至Linux 2. 将jdk移至/usr/local/tomcat并安装jdk mv jdk-8u261-linux-x64.rpm /usr/local/tomcat yum localinstall jdk-8u261-linux-x64.rpm -y 3. 将tomca…

【PHP】数据类型运算符位运算

文章目录 数据类型简单(基本)数据类型:4个小类复合数据类型:2个小类特殊数据类型:2个小类类型转换类型判断整数类型浮点类型布尔类型 运算符赋值运算符算术运算符比较运算符逻辑运算符连接运算符错误抑制符三目运算符自…

高忆管理:哪些股票建议不要选?是什么原因?

出资者在进行股票买卖时,股票的挑选也是很重要的一个过程,其决议了后期股票的开展情况以及出资者的盈亏情况。那么哪些股票主张不要选?是什么原因?下面就由高忆管理为大家分析: 1、成绩不好的股票 上市公司的成绩是支…

关于chromedriver.exe一系列问题的解决办法

最新 chromedriver.exe下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable 下载最新版本的 chromedriver.exe 将其解压在 python.exe 同目录下,以及Chrome 的路径下 例如: C:\Program Files\Google\Chrome\Applicati…

动态修改日志级别,太有用了!

首发于公众号:BiggerBoy 背景 我们在系统中一般都会打印一些日志,并且在开发、测试、生产各个环境中的日志级别可能不一样。在开发过程中为了方便调试打印了很多debug日志,但是生产环境为了性能,为了节约存储资源,我们…

设备管理系统是什么?的修设备管理系统有什么功能?

随着计算机技术的迅速发展和移动互联网的商业化和社会化应用,设备的种类和数量急剧增加。如何利用先进的网络技术和快速更新的计算机设备来有效地收集和处理设备信息,建立以信息化为核心的管理体系,减轻管理和业务人员的数据处理负担&#xf…

影像组学文章复现:ITHscore:通过多尺度放射学特征全面定量NSCLC肿瘤内异质性 ----小细胞肺癌肿瘤异质性评分

目的:通过计算机断层扫描(CT)图像量化非小细胞肺癌(NSCLC)的肿瘤内异质性(ITH)。 方法:整合局部辐射特征和全局像素分布模式,开发定量ITH测量-ITHscore。在六个患者队列(n = 1399)中检查ITHscore与肿瘤表型,基因型和患者预后的关联,以验证其在表征ITH方面的有效性…

【QT】绘制旋转等待

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 程序中经常会遇到耗时的操作,需要提供等待的窗口,防止用户多次点击造成卡顿等问题。本文分享旋转等待技术,希望对各位小伙伴有所帮助!结果如下:

长胜证券:越南首富,又火了!旗下汽车股市值盘中超越比亚迪!

当地时刻8月22日,美股三大股指涨跌纷歧,其中,道指跌0.51%,标普500指数跌0.28%,纳斯达克指数涨0.06%。 异动股方面,8月22日周二,越南电动轿车出产商VinFast Auto ADR盘中上涨超越167%&#xff0c…

uniapp日期选择组件优化

<uni-forms-item label="出生年月" name="birthDate"><view style="display: flex;flex-direction: row;align-items: center;height: 100%;"><view class="" v-

九龙湖街道社工站 开展家长交流互助社群亲子情景剧体验活动

为丰富辖区内小朋友们的暑期生活&#xff0c;促进亲子交流&#xff0c;8月20日&#xff0c;在红谷滩区民政局的领导下&#xff0c;九龙湖街道社工站链接赣红孵红石榴志愿服务队&#xff0c;以“家长交流互助社群”为依托&#xff0c;组织辖区内家庭到小哆哆沉浸式儿童剧场开展情…

Git企业开发控制理论和实操-从入门到深入(一)|为什么需要Git|Git的安装

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.net/yu_cblog/cate…

【笔记】MySQL行转列函数

GROUP_CONCAT()函数 创建表person_info&#xff0c;并插入数据 CREATE TABLE person_info (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) DEFAULT NULL,family varchar(100) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8;…

使用opencv-python在图片上显示中文

测试图像如下&#xff1a; 核心代码如下&#xff1a; import cv2 import numpy as np from PIL import Image, ImageDraw, ImageFontdef cv2ImgAddText(img, text, left, top, textColor(0, 255, 0), textSize20):if (isinstance(img, np.ndarray)): #判断是否OpenCV图片类型…

如何获取微软商店应用的appx程序包,并实现离线安装

我们以“NVIDIA Control Panel”为例 &#xff08;1&#xff09;先在网页版Microsoft应用商店(https://www.microsoft.com/zh-cn/store/apps/?rtc1)这里找到NVIDIA Control Panel&#xff0c;将网页链接地址复制下&#xff1b; &#xff08;2&#xff09;到 https://store.r…

恒运资本:沪指震荡跌0.55%坚守3100点,券商等板块走低,数据要素概念再活跃

23日早盘&#xff0c;两市股指低开低走&#xff0c;沪指盘中再次失守3100点&#xff0c;深成指、创业板指跌幅均超1%&#xff1b;北向资金连续流出态势&#xff0c;半日净卖出超70亿元。 截至午间收盘&#xff0c;沪指跌0.55%报3103.1点&#xff0c;深成指跌1.08%&#xff0c;创…