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

news2024/11/24 19:10:11

本文摘要

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.txt

diff --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.coloradmin.cn/o/941800.html

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

相关文章

PageHelper实现SpringBoot+Mybatis中的数据分页查询

1、通过PageHelper实现数据分页查询&#xff08;SpringBootMabatis&#xff09;。首先&#xff0c;在pom.xml中导入pagehelper相关依赖。 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</arti…

AUTOSAR DEM (二):DTC

AUTOSAR DEM &#xff08;二&#xff09;:DTC DTC与故障事件DTC基本组成DTC状态掩码 在章节一中提到了事件对应的DTC的状态变化。DTC是一种用来记录当某ECU发生或检测到某种故障时所呈现在大家目前的标识码&#xff0c;通过DTC便可以查表的方式获得该故障信息&#xff0c;如故障…

每日一题 57. 插入区间

读研了&#xff0c;开始用python刷题 今天的题目是力扣 每日一题 57. 插入区间 难度&#xff1a;中等 思路&#xff1a; 处理新区间起点&#xff0c;要么在两个老区间之间&#xff0c;要么被一个老区间包含处理新区间中点&#xff0c;同起点一样 我的代码如下 class Solut…

java+ssm+mysql农场信息管理系统

项目介绍&#xff1a; 本系统为基于jspssmmysql的农场信息管理系统&#xff0c;功能如下&#xff1a; 用户&#xff1a;注册登录系统&#xff0c;菜地信息管理&#xff0c;农作物信息管理&#xff0c;种植信息管理&#xff0c;客户信息管理&#xff0c;商家信息管理&#xff…

PHP教学资源管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 教学资源管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88260480 论文 https://downl…

如何在VR头显端实现低延迟的RTMP或RTMP播放

技术背景 VR&#xff08;虚拟现实技术&#xff09;给我们带来身临其境的视觉体验&#xff0c;广泛的应用于城市规划、教育培训、工业仿真、房地产、水利电力、室内设计、文旅、军事等众多领域&#xff0c;常用的行业比如&#xff1a; 教育行业&#xff1a;VR头显可以用于教育…

资产管理系统中的资产档案管理

资产管理系统中的资产档案管理是指对公司所有的固定资产进行详细的记录、分类、归档和保管。其目的是确保公司的固定资产能够被准确地识别、追踪和管理&#xff0c;以便更好地掌握公司的资产状况&#xff0c;提高资产利用率&#xff0c;降低运营成本。 资产档案管理包括以下几…

try代码块中执行了break。finally也会执行

代码展示 public class Test {public static void main(String[] args) {int a 0;while (true) {try {System.out.println("输出值为&#xff1a;" a);if (a 2) {break;} else {a;}} catch (Exception e) {e.printStackTrace();} finally {System.out.println(&q…

【java并发编程的艺术读书笔记】Lock接口简介、Condition类的使用、可重入锁与读写锁

Lock接口简介 Lock 接口是用于实现线程同步的一种机制。它提供了比传统的synchronized关键字更灵活和可扩展的方式来管理多个线程对共享资源的访问。 Lock 接口的主要目标是解决synchronized关键字的一些限制&#xff0c;例如无法中断正在等待锁的线程、不能尝试获取锁而立即…

电商平台需要用到的API接口封装商品详情SKU数据

想要开发电商系统的朋友对于电商平台API肯定不陌生&#xff0c;API接口即应用程序编程接口&#xff0c;电商平台开放部分API接口&#xff0c;供商家和服务商调用&#xff0c;以满足电商业务管理需求。随着电商市场需求的日益增长以及技术手段的不断成熟&#xff0c;电商平台开放…

镜之Json Compare Diff

前言 “镜” 寓意是凡事都有两面性,Json 对比也不例外! 因公司业务功能当中有一个履历的功能,它有多个版本的 JSON 数据需要对比出每个版本的不同差异节点并且将差异放置在一个新的 JSON 当中原有结构不能变动,差异节点使用数组对象的形式存储,前端点击标红即可显示多个版本的节…

Android全面屏下,默认不会全屏显示,屏幕底部会留黑问题

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 公司以前的老项目&#xff0c;便出现了这种情况&#xff0c;网上搜索了各种资料&#xf…

【SpringCloudAlibaba】Sentinel使用

文章目录 概述官网解决的问题主要特性 配置下载可视化控制台POMYML 流控规则直接(默认)关联链路 降级规则降级策略实战RT异常比例异常数 热点key限流示例&#xff1a;高级选项&#xff1a;参数例外项其他 系统规则SentinelResource按资源名称限流后续处理按照Url地址限流后续处…

轻松掌控视频速度,将过快变得慢慢来!

大家好&#xff01;在观看和编辑视频时&#xff0c;有时我们会遇到速度过快的视频&#xff0c;需要进行调整以获得更佳的观赏体验或编辑效果。为了让您轻松掌控视频速度&#xff0c;我们精心研发了一款强大的工具——视频速度调整器&#xff01;让您能够将过快的视频调慢&#…

相机SD卡数据丢失如何恢复?

出门在外&#xff0c;相机是人们记录生活点滴的重要工具&#xff0c;是旅游的最佳玩伴。人们每到一个地方&#xff0c;都喜欢用相机来见证自己来过的痕迹&#xff0c;拍好的照片都会被放到相机卡里&#xff0c;但在使用相机时&#xff0c;有时我们会意外删除了重要的照片或视频…

骨传导耳机对人体有危险吗?骨传导耳机的危害有哪些

根据目前的科学研究和经验&#xff0c;骨传导耳机被认为是相对安全的使用设备&#xff0c;不会对人体造成危险。由于骨传导耳机是通过振动颅骨传递声音&#xff0c;而不是通过直接传递声音到耳朵&#xff0c;因此对耳朵和听力系统的压力较小。 骨传导耳机相反没什么危害&#x…

【已解决】Windows10 pip安装报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x98

环境&#xff1a;win10, Python3.9 在Pycharm安装YoloV5的依赖包时出现报错&#xff1a;UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x98 出现 ‘gbk’ codec can’t decode… 的报错一般是因为读取文件出现编码问题导致没法读取文件&#xff0c;因此可以在报错…

Python基础 - 构造函数

目录 基础构造函数 重写 钻石继承 super函数 基础构造函数 命名为_init_&#xff0c;在实例化对象之前会自动执行该函数 构造函数方便我们在实例化对象的时候实现个性化定制 class A():def __init__(self,x,y):self.x xself.y ydef add(self):return self.xself.yclass…

找回宝塔面板登录信息

找回宝塔面板登录信息 找回面板信息 在Xshell控制面板中输入 /etc/init.d/bt default找回登录信息 在Xshell中输入 bt之后根据提示操作 bt 之后根据提示操作![在这里插入图片描述](https://img-blog.csdnimg.cn/e209039ef4684c8a92126d5b8a0580d6.png#pic_center)

软件测试 —— Airtest的iOS实用接口介绍 (建议收藏)

1. 前言 前段时间Airtest更新了1.3.0.1版本&#xff0c;里面涉及非常多的iOS功能新增和改动&#xff0c;今天想详细跟大家聊一下里面的iOS设备接口。 PS&#xff1a;本文示例均使用本地连接的iOS设备&#xff0c;Airtest版本为1.3.0.1 。 2. 安装接口&#xff1a;install、in…