【Java架构-版本控制】-Git基础

本文摘要

Git作为版本控制工具,使用非常广泛,在此咱们由浅入深,分三篇文章(Git基础、Git进阶、Gitlab搭那家)来深入学习Git


文章目录

  • 本文摘要
  • 1.Git仓库基本概念
    • 1.1 远程仓库(Remote)
    • 1.2 本地库(Repository)
  • 2. Git仓库工作流程
  • 3. Git常用命令
  • 4. Git配置文件
    • 4.1. 查看配置文件
    • 4.2. 新增配置文件
    • 4.3. 删除配置文件
  • 5. .gitignore文件
    • 5.1. 文件加载进暂存区
    • 5.2. glob模式
    • 5.3. 匹配示例
    • 5.4. 定义全局忽略文件
    • 5.5. 通用忽略文件
  • 6.diff
    • 6.1. 命令
    • 6.2. 工作空间与暂存区
    • 6.3.暂存区与版本库
    • 6.4. 工作空间与版本库
    • 6.5. 版本库与版本库


1.Git仓库基本概念

1.1 远程仓库(Remote)

即资源库,是远程服务器机器上的代码库,用于做不同版本库文件保存、更新。如Gitlab、GitHub、Gitee

1.2 本地库(Repository)

即用户在本地创建的目录,拥有远程库的一个快照,由工作区+版本库构成

  • 工作区
    项目根目录中除.git目录以外的内容,存储内容的实际文件
  • 暂存区
    也叫做缓存区,暂存信息存放在.git目录下的index文件中,即.git/index中,用于临时保存修改的内容
  • 版本库(.git目录)
    本地库的根目录中的一个隐藏目录.git,用于记录版本信息,git进行版本控制所需要的文件,都放在.git文件夹中

2. Git仓库工作流程

  • 克隆远程库:从远程库上克隆完整的Git仓库(包括代码和版本信息)到本地;
  • 在本地库上修改代码:在本地库上根据不同的开发目的,创建分支,修改代码;
  • 提交到分支:在本地分支上提交代码;
  • 把修改合并到本地主分支:在本地库上提交更新,也就是说,把修改合并到本地主分支;
  • 把远程库合并到本地主分支:把远程库上的最新代码fetch下来,跟本地主分支合并,如果存在冲突,那么解决冲突。
  • 把本地主分支提交到远程库:生成补丁(patch),把补丁发送给远程库。

在这里插入图片描述

3. Git常用命令

命令作用示例
init初始化git项目git init
status查看git中文件状态git status
add将工作空间文件添加至git暂存区单文件:git add filename
多文件:git add file1 file2
所有文件:git add .
rm --cached将暂存区文件撤销回工作空间git rm --cached filename
restore将暂存区文件撤销回工作空间git restore --staged filename
commit将暂存区文件上传至git版本库git commit -m '提交注释'
log查看git操作日志显示所有日志:git log
简单显示日志:git log --pretty=oneline
reset --hard HEAD^1. 回退到上一个版本
2. 后边有几个^就表示回退到前边版本
3. 回退指定版本
1. 回退上一版本:git reset --hard HEAD^
2. 回退上上版本:git reset --hard HEAD^^
3. 回退至前10个版本:git reset --hard HEAD~10
reset --hard version回到至指定版本git reset --hard 996c
git reflog回退撤销git reflog
rm删除文件,文件从版本库移至暂存区,要完全删除,必须在执行commitgit rm filename

4. Git配置文件

Git 配置主要分为三类:优先级:仓库级(local)>用户级(global)>系统级(system),对应的文件分别为:仓库级(.git/config)、用户级(~/.gitconfig)、系统级(/etc/gitconfig)

4.1. 查看配置文件

  • 查看仓库级:git config --local -l
  • 查看用户级:git config --global - l
  • 查看系统级:git config --system -l

4.2. 新增配置文件

  • 仓库级:git config --local user.name ‘zhangsan’
  • 用户级:git config --global user.name ‘lisi’
  • 系统级:git config --system user.name ‘wangwu’

4.3. 删除配置文件

  • git config --global --unset user.name

5. .gitignore文件

5.1. 文件加载进暂存区

  • 提交所有变化:git add -A
  • 只提交修改、删除,不包括新建:git add -u
  • 只提交新建、修改,不包括删除:git add .

5.2. glob模式

  • “*”:匹配零个或多个任意字符
  • []:匹配方括号中的字符,如[ab]匹配a或b
  • ?:匹配任意一个字符
  • [n-m]:匹配所有这个字符范围内的字符

5.3. 匹配示例

  • logs/:忽略logs目录
  • /logs.txt:忽略logs.txt文件
  • *.class:忽略class结尾的文件
  • !/classes/.class:不忽略classes目录下的class结尾文件
  • tmp/*.txt:只忽略tmp目录下的txt结尾文件
  • **/foo:可以忽略/foo,a/foo,a/b/foo等

5.4. 定义全局忽略文件

  • git config --global core.excludesfile ~/.gitignore

5.5. 通用忽略文件

#java
*.class#package file
*.war
*.ear
*.zip
*.tar.gz
*.rar
#maven ignore
target/
build/#eclipse ignore
.settings/
.project
.classpatch#Intellij idea
.idea/
/idea/
*.ipr
*.iml
*.iws# temp file
*.log
*.cache
*.diff
*.patch
*.tmp# system ignore
.DS_Store
Thumbs.db

6.diff

diff:用于比较工作空间、暂存区、版本库中文件差异性

6.1. 命令

  • git diff readme.txt

6.2. 工作空间与暂存区

$ git diff 1.txt# a/1.txt:表示暂存区文件,b/1.txt:表示工作空间文件
diff --git a/1.txt b/1.txt# 表示暂存区的版本
index 9a71f81..478d5b1 100644
--- a/1.txt
+++ b/1.txt# -1:表示暂存区的行数,2:表示工作空间行数
@@ -1,2 +1,2 @@hello world
-
# update workspace:表示工作空间增加了该行数据
+update workspace

6.3.暂存区与版本库

$ git diff --cached 1.txt
diff --git a/1.txt b/1.txt
index 9a71f81..478d5b1 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@hello world
-
+update workspace

6.4. 工作空间与版本库

# 指定要比较的版本号
$ git diff HEAD 1.txtdiff --git a/1.txt b/1.txt
index 9a71f81..f0bc050 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,4 @@hello world
+update workspace+xxixixix

6.5. 版本库与版本库

# 指定要比较的两个版本号
$ git diff HEAD HEAD^
diff --git a/1.txt b/1.txt
index 478d5b1..9a71f81 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@hello world
-update workspace
+

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

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

相关文章

新兴崛起的优雅框架Mybatis-Flex

目录 介绍 基础使用 简单入门 插入数据 insertSelective insertOrUpdate insertBatch 注意事项 删除数据 ​编辑 条件删除 批量删除 注意事项 更新数据 ​编辑 条件更新 UpdateEntity使用 UpdaerWrapper使用 注意事项 查询数据 查询一条数据 selectOneById​编辑 …

Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)

一 Web开发模式 1. 前后端混合开发模式 前后端混合开发模式是一种开发方式,将前端和后端的开发工作结合在一起,以加快项目的开发速度和 提高协作效率。这种模式通常用于快速原型开发、小型项目或敏捷开发中。在前后端混合开发模式中,前端和…

改进YOLOv8系列:原创改进创新点 SIoU-NMS,EIoU-NMS,DIoU-NMS,CIoU-NMS,GIoU-NMS改进

💡该教程为属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章为YOLOv8独家原创改进:原创改进创新点 DIoU-NMS,SIoU-NMS,EIoU-NMS,CIoU-NMS,GIoU-NMS改进。 💡对自己数据集改进有效的话,可以直接当做自己的原创改…

NSS [羊城杯 2020]easyser

NSS [羊城杯 2020]easyser 开题。很容易让人觉得环境坏了。 不要慌,无从下手时。看源码、扫目录、抓包。一套操作下来,发现几个可以下手的路由。 /index.php /robots.txt 访问 /star1.php,一说到百度,就猜测是否存在SSRF。 源码中…

Linux x86_64 C语言实现gdb断点机制

文章目录 前言一、trap指令简介二、调用ptrace三、创建breakpoints四、CONT 和 SINGLESTEP五、完整代码演示六、增加参数检测参考资料 前言 本文参考文章:Implementing breakpoints on x86 Linux 一、trap指令简介 将通过在断点地址向目标进程的内存中插入一条新…

图像二值化

目录 1.固定值二值化 2.自适应阈值二值化 3.Android JNI完整代码 1.固定值二值化 固定阈值二值化是OpenCV中一种简单而常用的图像处理技术,用于将图像转换为二值图像。在固定阈值二值化中,像素值根据一个预定义的阈值进行分类,大于阈值的…

c语言实现二叉树(链式结构)

文章目录 前言一、二叉树的遍历1、二叉树的层序遍历2、二叉树的前序遍历3、二叉树的中序遍历4、二叉树的后序遍历5、代码实现 二、二叉树的一些操作的实现1、求二叉树的结点个数2、求二叉树叶子结点个数3、求二叉树第k层结点个数4、求二叉树深度5、二叉树中查找值为x的结点6、二…

streamlit-高级功能

缓存 st.cache_data st.cache_resource 为应用程序添加会话状态 会话状态 会话状态应用到应用程序 会话状态和小部件关联 可序列化会话状态 注意事项和限制 命令行选项 应用程序菜单 菜单选项 开发者选项 streamlit配置 按钮行为和示例 连接到数据 数据框 形式 小部件语义 …

前端vue引入高德地图入门教程

距离上一篇关于前端项目中使用高德地图的文章已经将近5年之久, 这是我的第一篇关于高德地图的文章 这期间前端技术日新月异,5年前JQuery还如日中天,如今已经销声匿迹,很少有公司招聘还在要求JQuery,更多的是Vue、React…

keras深度学习框架构建LeNet5神经网络模型实现手写数字识别

之前两篇文章分别通过keras深度学习框架构建简单神经网络和卷积神经网络实现过手写数字识别实验。这篇文章分享我根据LeNet5模型构建的卷积神经网络来实现手写数字识别。 这个实验是根据LeNet5模型构建卷积神经网络,LeNet5模型的原理图如下所示: 相信大家…

中欧财富:分布式数据库的应用历程和 TiDB 7.1 新特性探索

作者:张政俊 中欧财富数据库负责人 中欧财富是中欧基金控股的销售子公司,旗下 APP 实现业内基金品种全覆盖,提供基金交易、大数据选基、智慧定投、理财师咨询等投资工具及服务。中欧财富致力为投资者及合作伙伴提供一站式互联网财富管理解决方…

js优雅的统计字符串字符出现次数

题目如下 统计一串字符串中每个字符出现的频率 示例字符串 let str asdfasqwerqwrdfafafasdfopasdfopckpasdfassfd小白写法 let str asdfasqwerqwrdfafafasdfopasdfopckpasdfassfdlet result {}; for (let i 0; i < str.length; i) {if (result[str[i]]) {result[str[…

论文笔记: One Fits All:Power General Time Series Analysis by Pretrained LM

1 intro 时间序列领域预训练模型/foundation 模型的研究还不是很多 主要挑战是缺乏大量的数据来训练用于时间序列分析的基础模型——>论文利用预训练的语言模型进行通用的时间序列分析 为各种时间序列任务提供了一个统一的框架 论文还调查了为什么从语言领域预训练的Transf…

【ag-grid-vue】column

网格中的每一列都使用列定义(ColDef)来定义。列根据在网格选项中指定的列定义的顺序在网格中定位。 列定义 下面的例子展示了一个定义了3列的简单网格: <template><ag-grid-vuestyle"height: 300px; width: 1000px"class"ag-theme-balham":colum…

get√接口自动化核心知识点浓缩,为面试加分

日常接触到的接口自动化从实际目标可以划分为两大类&#xff1a; 1、为模拟测试数据而开展的接口自动化 这种接口自动化大多是单次执行&#xff0c;目的很明确是为了功能测试创造测试数据&#xff0c;节约人工造数据的时间和人工成本&#xff0c;提高功能测试人员的测试效率。…

chain of thought (思维链, cot)

定义 思维链 (Chain-of-thought&#xff0c;CoT) 的概念是在 Google 的论文 "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" 中被首次提出。思维链&#xff08;CoT&#xff09;是一种改进的提示策略&#xff0c;用于提高 LLM 在复杂推理…

【UE5】给模型指定面添加自定义材质

实现步骤 1. 首先我们向UE中导入一个简单的模型&#xff0c;可以看到目前该模型的材质插槽只有一个&#xff0c;当我们修改材质时会使得模型整体的材质全部改变&#xff0c;如果我们只想改变模型的某些面的材质就需要继续做后续操作。 2. 选择建模模式 3. 在模式工具栏中点击…

Linux学习之Ubuntu 20使用systemd管理OpenResty服务

sudo cat /etc/issue可以看到操作系统的版本是Ubuntu 20.04.4 LTS&#xff0c;sudo lsb_release -r可以看到版本是20.04&#xff0c;sudo uname -r可以看到内核版本是5.5.19&#xff0c;sudo make -v可以看到版本是GNU Make 4.2.1。 需要先参考我的博客《Linux学习之Ubuntu 2…

SpringBoot Mybatis 多数据源 MySQL+Oracle

一、背景 在SpringBoot Mybatis 项目中&#xff0c;需要连接 多个数据源&#xff0c;连接多个数据库&#xff0c;需要连接一个MySQL数据库和一个Oracle数据库 二、依赖 pom.xml <dependencies><dependency><groupId>org.springframework.boot</groupId&…

【Golang】go条件编译

交叉编译只是为了能在一个平台上编译出其他平台可运行的程序&#xff0c;Go 作为一个跨平台的语言&#xff0c;它提供的类库势必也是跨平台的&#xff0c;比如说程序的系统调用相关的功能&#xff0c;能根据所处环境选择对应的源码进行编译。让编译器只对满足条件的代码进行编译…