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

news2024/12/22 0:25:36

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代码
在这里插入图片描述

真正开发的过程。

在这里插入图片描述

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

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

相关文章

【图机器学习系列】(一)图机器学习简介

微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xff0c;代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始&#xff0c;计划开始】&#xf…

Qt找不到QSound头文件,头文件QSoundEffect

目录 Qt找不到QSound头文件 CMake qmke 可能版本不同更新&#xff0c; 找不到QSound头文件 Qt找不到QSound头文件 #include <QSound> CMake 可以看一下这篇来自网上的文章 CMake中添加Qt模块的合理方法 - wjbooks - 博客园 (cnblogs.com) qmke 打开.pro文件&am…

Flowise在ubuntu22.04上的安装

之前我写过一篇FastGPT的文章&#xff0c;这里我再介绍另外一个开源的低代码工具&#xff0c;他提供开发人员可定制的LLM编排流程和AI代理。开发 LLM 应用程序通常涉及无数次迭代。Flowise的低代码和拖放式 UI 方法支持快速迭代&#xff0c;帮助您更快地从测试到生产。 推荐它的…

鸿蒙(API 12 Beta3版)【AVSession Kit简介】 音视频播控服务

AVSession Kit&#xff08;Audio & Video Session Kit&#xff0c;音视频播控服务&#xff09;是系统提供的音视频管控服务&#xff0c;用于统一管理系统中所有音视频行为&#xff0c;帮助开发者快速构建音视频统一展示和控制能力。 能力范围 提供音视频统一管控能力&…

Windows Server 域控制服务器安装及相关使用

目录 1.将客户机加入域 2.安装域控制器 3.新建域用户 4.设置用户登录时间&#xff0c;账户过期时间 5.软件分发 ​编辑 6.换壁纸 7.OU与GPO的概念 域为集中控制&#xff0c;拿下域控是拿下目标的关键 以Windows Server 2022为例 1.将客户机加入域 前提&#xff1a;客…

通过调整JVM的默认内存配置来解决内存溢出(‌OutOfMemoryError)‌或栈溢出(‌StackOverflowError)‌等错误

文章目录 引言I 调整JVM的默认堆内存配置java命令启动jar包Tomcat服务器部署java应用引言 问题: org.springframework.web.util.estedServletException: Handlerdispatch failed: nested exception isjava.lang.0utOfMemoryError: Java heap space原因分析: 查询查询平台所…

python 之可视化数据(地形图练习)

一、按要求构建疫情情况数据的地形图 二、代码展示 from pyecharts.charts import Map from pyecharts.options import VisualMapOptsmap Map() data [("北京市" , 994),("上海市" , 199),("湖南省" , 299),("台湾省" , 12),(&qu…

[游戏开发] LuaTable转string存读二进制文件

UE5和Unity通用此方案&#xff0c;只不过读写文件的接口略有不同&#xff0c;lua代码的处理是相同的。 下面两个方法是 LuaTable和字符串互相转换的代码 function XUtils.luaTableToString(tab, sp)sp sp or ""local s ""for k,v in pairs(tab) doif t…

高斯泼溅综合指南

高斯泼溅&#xff08;Gaussian Splatting&#xff09;是一种表示 3D 场景和渲染新视图的方法&#xff0c;在“实时辐射场渲染的 3D 高斯泼溅” 中引入。它可以被认为是 NeRF 类模型的替代品&#xff0c;就像当年的 NeRF 一样&#xff0c;高斯泼溅引发了大量新的研究工作&#x…

Android Kotlin - 通过 URL Scheme 打开应用

在 Android 应用中&#xff0c;可以通过自定义 URL Scheme 或 Deep Links 打开应用。这允许你定义一个自定义的 URL 格式&#xff0c;使得当用户点击包含这个 URL 的链接时&#xff0c;系统可以识别并打开你的 APP。以下是详细的实现步骤和一些注意事项。 1. 配置 AndroidMani…

RISC-V特权架构 - 时钟中断处理

RISC-V特权架构 - 时钟中断处理 1 MTI中断处理1.1 触发中断1.2 查询mie.MTIE与mip.MTIE1.3 若运行在M模式下1.4 若运行在S模式下1.5 若运行在U模式下 2 STI中断处理2.1 触发中断2.2 查询mie.STIE与mip.STIE2.3 若运行在M模式下2.4 若运行在S模式下2.5 若运行在U模式下 3 知识总…

Transformer架构的演进之路探究

1 引言 在2017年的开创性论文《Attention is All You Need&#xff08;注意力就是你所需要的一切&#xff09;》中&#xff0c;Vaswani等人提出了Transformer架构&#xff0c;这不仅在语音识别领域引起了一场革命&#xff0c;也对其他多个领域产生了深远的影响。本文将探讨Tra…

【早鸟优惠券】PostgreSQL 16 专栏优惠券

PostgreSQL 从入门到熟悉&#xff0c;本专栏只能做到从入门到熟悉。本专栏以 Markdown 格式书写&#xff0c;格式精美。有需要的朋友可以看下&#xff0c;使用的版本是 16。本专栏大约 20 万字左右&#xff0c;目前已完成了 18 万多字了。还有两篇&#xff08;事务、性能调优&a…

搭建内网开发环境(一)|基于docker快速部署开发环境

引言 最近因需要搭建一套简易版的纯内网的开发环境&#xff0c;服务器采用 centos8.0&#xff0c;容器化技术采用 docker 使用 docker-compose 进行容器编排。 该系列教程分为两大类&#xff1a; 软件安装和使用&#xff0c;这类是开发环境常用的软件部署和使用&#xff0c;涉…

Vue框架学习笔记-8

Vue中的跨域问题 在Vue项目中遇到跨域问题&#xff0c;通常是因为前端&#xff08;Vue&#xff09;和后端&#xff08;如Node.js, Django, Spring Boot等&#xff09;部署在不同的域名或端口上&#xff0c;浏览器出于安全考虑&#xff0c;会阻止跨域请求。解决Vue中的跨域问题…

获取专项练习

文章目录 1.sun-club-practice-api1.vo构建1.SpecialPracticeVO.java2.SpecialPracticeCategoryVO.java3.SpecialPracticeLabelVO.java 2.SubjectInfoTypeEnum.java 2.sun-club-practice-server1.PracticeSetController.java2.service1.PracticeSetService.java2.PracticeSetSe…

基于SpringBoot的秒杀系统设计与实现

TOC springboot193基于SpringBoot的秒杀系统设计与实现 第1章 绪论 1.1 研究背景 互联网时代不仅仅是通过各种各样的电脑进行网络连接的时代&#xff0c;也包含了移动终端连接互联网进行复杂处理的一些事情。传统的互联网时代一般泛指就是PC端&#xff0c;也就是电脑互联网…

开放式耳机怎么样好用吗?六个专业好招教你选!

传统入耳式耳机容易滑落&#xff0c;而且戴久了耳朵疼&#xff0c;近段时间&#xff0c;耳机圈开始流行开放式耳机。开放式耳机的出现就避免了这个问题的出现&#xff0c;本文就为大家推荐几款使用感较好的开放式耳机&#xff0c;一起来看看吧~现在开放式耳机太多了&#xff0c…

IO进程(学习)2024.8.15

目录 重定向打开文件 文件IO 概念 特点 函数 1.打开文件 2.关闭文件 3.读写文件 read write 4.文件定位操作 重定向打开文件 FILE * freopen(const char *pathname, const char *mode, FILE* fp) 功能&#xff1a;将指定的文件流重定向到打开的文件中 参数&#…

离散数学概论

目录 一、引言 二、离散数学的主要内容 1. 集合论 1.1 集合的基本概念 1.2 集合的运算 集合运算总结表格 2. 数理逻辑 2.1 命题逻辑 2.2 逻辑推理 2.3 逻辑等价 逻辑联结词与逻辑等价总结表格 3. 组合数学 3.1 计数原理 3.2 排列与组合 3.3 容斥原理 组合数学总…