当前位置: 首页 > news >正文

JavaEE从入门到起飞(八) ~ Git

git

概括

Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)。

学了git能干什么?

代码回溯

查看历史提交记录并恢复到之前的某个状态。这在发现错误或需要查看特定版本时非常有用。和Ctrl+Z的区别在于git就算一个月前的代码也可以回退。

查看提交历史: git log 这个命令会列出所有提交记录,包括提交哈希、作者、日期以及提交信息。

查看精简版的历史:git reflog 这种方便阅读。

查看某次提交的内容: git show \<commit-hash> 使用 <commit-hash> 替换为具体的提交哈希值。

回到某个提交状态: git checkout \<commit-hash> 这会将工作目录恢复到指定提交的状态。

在这里插入图片描述

版本切换

版本切换通常指的是在不同的分支之间切换,以便于在不同的功能开发、修复bug或维护版本之间进行切换。

查看当前分支: git branch 当前分支会用 * 标记。

创建分支:git branch 分支名称

切换分支:git checkout 分支名称

创建新分支并切换: git checkout -b 分支名称

合并分支: git merge 分支名称 切换到目标分支,然后合并另一个分支

推送至远程分支:git push 远程仓库名称 本地分支的名称

删除分支:git branch -d 分支名称

多人协作

多人协作是指多个开发者共同在一个项目上工作,每个开发者有自己的本地仓库,并且这些仓库都与远程仓库同步。

拉取远程仓库的变化: git pull origin master 这个命令的意思是将本地的 master 分支推送到远程仓库 origin 中对应的 master 分支。

推送本地变化到远程仓库: git push origin master

解决冲突: 在合并分支时可能会遇到冲突,需要手动解决冲突后再提交。
使用分支: 每个人在自己的分支上工作,完成后合并到主分支。

远程备份

远程备份是指将代码推送到远程服务器或代码托管平台,以防止数据丢失。

添加远程仓库: git remote add origin 远程仓库的 URL

推送代码到远程仓库: git push -u origin master -u 参数用于设置远程跟踪分支。

本地电脑生成秘钥对

Git操作流程

创建本地仓库

本地仓库可以通过两种方式获取,图形化界面创建

在这里插入图片描述

提交文件

提交操作的作用是将文件放到本地仓库中进行管理

修改文件

在这里插入图片描述

历史版本

在这里插入图片描述

删除文件

删除文件需要做两件事: 1) 删除文件 2) 提交更新到本地仓库
在这里插入图片描述

命令行操作流程

除了使用小乌龟进行操作外,还可以直接使用命令完成上面的操作

* 创建本地仓库git init* 查看本地库状态git status * 添加到暂存区git add 文件名* 提交到本地仓库git commit -m '日志信息' 文件名* 查看历史记录git reflog  精简git log     详细* 版本穿梭git reset --hard 版本号* 删除工作区文件git rm 文件名git commit -m '日志'

忽略文件

在特定情况下,我们不希望自己的某些文件被git管理,这时候,我们就要设置git忽略掉此文件

在这里插入图片描述

工作流程

在这里插入图片描述

一般工作流程如下:

  1. 得到本地仓库(手动本地创建或者从远程仓库中克隆)
  2. 从本地仓库中执行checkout,检出项目到工作目录(自动执行)
  3. 在工作目录中编写代码,然后执行add命令将代码添加到暂存区(其实就是将代码添加到git管理)
  4. 执行commit代码到本地仓库,本地仓库中会保存代码各个历史版本
  5. 后面可以对代码进行修改、删除,当需要保存到本地仓库时,执行commit即可(无需再执行add)
  6. 如果需要跟团队其他成员共享文件,可以将代码push(推送)到远程仓库,也可以通过pull(拉取)得到远程仓库中的最新代码

创建远程仓库

在这里插入图片描述

仓库连接协议

git仓库支持两种连接协议:

  • HTTPS:是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性
  • SSH:安全外壳协议,通过密钥对方式对传输的数据进行加密,实现免密登录

在这里插入图片描述

复制git的地址(一定注意:这个地址是SSH的,以git开头,千万不要复制成HTTPS的

SSH 密钥:生成的密钥对(包括公钥和私钥)常用于 SSH 连接。SSH 密钥可以让你安全地访问远程 Git 仓库,比如 GitHub、GitLab 或 Bitbucket,而无需每次都输入用户名和密码。你将公钥添加到远程仓库的账户设置中,而私钥则保存在本地计算机上,Git 使用它来进行身份验证。

使用cmd命令启动dos窗口,然后输入ssh-keygen -t rsa命令按回车键,然后一路回车,生成秘钥对

在这里插入图片描述

注意两个坑:

  1. 输入ssh-keygen -t rsa回车的时候,提示ssh-keygen不是内部或外部命令,直接把问题放到百度上就有答案

  2. 由于某些同学电脑用户名是中文的,就有可能出现创建目录失败的问题(如下图),解决方案参考补充2--秘钥创建问题的解决方案视频

将公钥复制到gitee中

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

配置小乌龟开启ssh认证协议

在这里插入图片描述

操作远程仓库

克隆远程仓库到本地

在本地新建一个zhang文件夹,然后在文件夹中右键点击Git克隆...,填写URL(从网页中复制),点击确定

在这里插入图片描述

在本地仓库中添加文件

在文件夹中新建一个hello.txt文件,并执行add–commit操作,将其添加到本地仓库

将文件推送到远程仓库

在这里插入图片描述

远程仓库中查看文件

在这里插入图片描述

命令操作
* 克隆远程仓库到本地git clone  远程仓库地址* 拉取远程仓库最新代码合并到本地仓库git pull 远程仓库名称 本地分支名* 将本地仓库代码推送到远程仓库git push 远程仓库名称 远程分支名称

Idea操作Git

基础操作

在idea中配置Git

在这里插入图片描述

使用idea打开要管理的项目

在这里插入图片描述

在idea中配置git管理

在这里插入图片描述

在idea中配置忽略文件

安装文件忽略插件,重启idea

在这里插入图片描述

解释:

​ .idea/ 忽略.idea文件夹

​ *.iml 忽略所有的.iml文件

​ out/ 忽略out文件夹

​ target/ 忽略target文件夹

提交代码到本地仓库

在这里插入图片描述

创建远程仓库

在这里插入图片描述

推送代码到远程仓库

在这里插入图片描述

代码冲突

代码冲突,表示两个人同时改变同一个文件的同一行。git开发,不修改的内容,不会覆盖。

模拟冲突

在这里插入图片描述

1)在本地新建一个文件夹,然后将代码克隆一份下来,然后修改下pom.xml

2)通过小乌龟现将本地other文件夹的代码提交到远程仓库

3)在idea中也对pom.xml文件进行修改操作

4)再通过idea将idea中的代码推送到远程仓库,再推送的过程中,就会出现下面的错误

在这里插入图片描述

接下来,我们点击Merge开始合并代码(解决冲突)

解决冲突

在这里插入图片描述

1)在idea中手动合并代码,解决掉冲突

2)将改好代码再次向远程仓库推送

分支管理(难点)

切分支一定要先commit在切分支。

分支操作:分支是Git 使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。相当于,你本地有多少分支就有多少套隔离的代码。
同一个仓库可以有多个分支,各个分支相互独立,互不干扰。例如,你们一起开发

在这里插入图片描述

通过git init 命令创建本地仓库时默认会创建一个master分支。分支主要用于版本控制。

在这里插入图片描述

创建分支

① 创建新分支,名称为hm
在这里插入图片描述

② 在hm新分支上开发代码

在这里插入图片描述

合并分支

① 在新分支上开发完代码后,进行提交和推送

在这里插入图片描述

② 切换到master分支
在这里插入图片描述

③ 将hm分支的代码合并到当前分支(注意:此时的当前分支是master)

先拉取到主分支,然后再合并到主分支,如果在推送到主分支中。

在这里插入图片描述

顺序: add-------开发----commit到本地----->pull代码(可能出现代码冲突, 需要merge代码)-------->push代码
在这里插入图片描述

真正开发的过程。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 今日(2024 年 8 月 15 日)科技新闻
  • RESTful API设计指南:构建高效、可扩展的Web服务
  • 仿RabbitMq实现简易消息队列正式篇(连接篇)
  • C 开源库之cJSON
  • 比特币8.12学习问题
  • 学懂C++(二十三):高级教程——深入详解C++ 标准库的多线程支持
  • JavaScript 详解——Vue基础
  • vue 后台管理 之 状态管理 vuex 的使用
  • React之简易笔记本
  • k8s部署kubeadm init初始化不成功,coredns处于pending,master和nodes处于notready状态
  • MySQL 查询分组内最新的第一条数据
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • go语言源码解读之数据结构堆
  • Redis远程字典服务器(5) —— list类型详解
  • Cocos Creator倒计时
  • Docker: 容器互访的三种方式
  • es的写入过程
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java精华积累:初学者都应该搞懂的问题
  • Laravel核心解读--Facades
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • SAP云平台里Global Account和Sub Account的关系
  • supervisor 永不挂掉的进程 安装以及使用
  • V4L2视频输入框架概述
  • Vue 2.3、2.4 知识点小结
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从重复到重用
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 简析gRPC client 连接管理
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 学习笔记TF060:图像语音结合,看图说话
  • 一天一个设计模式之JS实现——适配器模式
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $.each()与$(selector).each()
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (PySpark)RDD实验实战——求商品销量排行
  • (Ruby)Ubuntu12.04安装Rails环境
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (过滤器)Filter和(监听器)listener
  • (面试必看!)锁策略
  • (杂交版)植物大战僵尸
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)我也是一只IT小小鸟
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET 8.0 中有哪些新的变化?
  • .Net Winform开发笔记(一)
  • .net 中viewstate的原理和使用
  • .net操作Excel出错解决