【Git】从零开始使用git --- git 的基本使用

news2025/4/16 1:46:21

在这里插入图片描述

哪怕是野火焚烧,哪怕是冰霜覆盖,
依然是志向不改,依然是信念不衰。
--- 《悟空传》---

从零开始使用git

  • 了解 Git
  • git创建本地仓库
  • 初步理解git结构
  • 版本回退

了解 Git

开发场景中,文档可能会经历若干版本的迭代。假如我们不进行版本管理,那么出现问题后想要回溯版本,就会
变得异常困难!

Git就是用来解决这个问题的:

  • git可以管理电脑上任意格式的文档。
  • git可以做到版本控制,可以记录文件内容变化,以便将来查阅特定版本修订情况的系统。

Git最初是由Linux开发者Linus用了仅仅两周时间纯C语言编写而成(两周时间包括测试),也就是目前为止最好用的分布式版本控制系统。(不得不说大佬就大佬,真滴厉害!)

git创建本地仓库

当我们想要将一个文件夹做为本地仓库时,可以使用:

git init

进行快速的初始化,当我们执行后会出现日志:在这里插入图片描述
此时,我们的本地仓库就建立好了!
当我们创建好本地仓库时,该来路径下会产生一个文件.git在这里插入图片描述
我们使用tree来看一下这个文件的文件结构:
在这里插入图片描述
后面我们会一一讲解。

本地仓库创建好之后,还需要进行一些配置。我们必须配置name email,那么如何进行配置呢?

git config user.name "jlx"
git config user.email "123123@qq.com"

我们可以通过git config -l 查看一下配置项:
在这里插入图片描述
想要删除配置项可以使用

git config --unset user.name
git config --unset user.email 

接下来我们来看一个选项--global:

git config --global user.name "jlx"
git config --global user.email "123123@qq.com"

在一台主机下,我们可以配置多个本地仓库,每个仓库都会有对应的配置项。--global就是声明一个全局的配置项,所有的本地仓库都可以进行访问。对应的删除:

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

初步理解git结构

我们现在我们的本地仓库创建一个文件:
在这里插入图片描述
这样创建了一个文件之后,我们并没有真正的对readme进行了管理,这只是创建了一个文件!

注意:千万不能对.git文件进行手动修改!必须通过指令来进行管理,否则会破坏git仓库

所以readme这个区域也被称之为工作区。工作区就是我们进行编写代码,修改文件的地方:
在这里插入图片描述
只有我们使用git add filename之后,才会进入git仓库进行管理。使用add之后会将文件放入stage(暂存区)。当我们进行对文件进行修改之后,使用git add filename指令后,会将文件的新增/修改/删除信息放入暂存区(这里储存一个索引)。之后再通过git commit -m""将暂存区的文件放入版本库中。

在版本库中还存在一个对象库objects,当我们进行git add filename之后,修改的工作区内容会写入对象库的一个新的git对象中。
在这里插入图片描述
我们创建三个文件来看:
在这里插入图片描述
来看git log命令的效果:
在这里插入图片描述
此时就能看到历史commit的数据,这个提交id是哈希算法生成的一个大数,不会重复。

接下来我们再来了解一下git结构中的HEAD:
在这里插入图片描述
其指向了一个路径refs/heads/master。我们打印一下这个内容:
在这里插入图片描述
这里存放的就是最新一次commit提交的信息。这样的序列号都会有对应的对象:
在这里插入图片描述
这个序列号组成是:2位文件夹名称 + 对象序列号。我们来看这个对象到底是怎样的:
在这里插入图片描述

这里看到还有一个tree对象,我们看看这是什么:
在这里插入图片描述
这里是之前我们提交过的文件,都有对应的对象。

如果我们想要查看暂存区中是否出现了新内容,可以使用git statu查看是否工作区是否有被修改的文件。并且还可以通过git diff 可以查看工作区和仓库中的差异:
在这里插入图片描述

版本回退

接下来我们来了解git的核心功能:版本回退,本质是回退版本库的内容。
git存在三个部分:工作区,暂存区,版本库,都可以进行回退选项:

  1. --soft: 只回退版本库内容
  2. --mixed:对暂存区和版本库进行版本回退(默认选项
  3. --hard:对暂存区和版本库以及工作区都进行版本回退(慎用 ,会导致工作区新内容丢失,直接丢失好几天写的代码可就坏了)

那么如何进行选择回退到哪一个版本呢,我们可以打印出日志来看:
在这里插入图片描述
此时可以看到每次的commit信息了,所以写出完善的commit信息是非常重要的!!!然后就可以通过序列号进行回退了在这里插入图片描述
在这里插入图片描述

成功回退!当然如果后悔了,也可再次进行版本回退!只要我们的版本序列化存在就可以进行回退!

在这里插入图片描述
如果你不小心退出了,再次进入后发现之前的log信息不见了,不用担忧,可以通过git reflog进行查看,并进行版本选择。如果如果序列号真的没有了,那么也就没有办法进行版本回退了!!! 必须要多加注意哦!!!
版本库版本回退的本质是master指向的改变!所以速度很快!

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

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

相关文章

Android 中支持旧版 API 的方法(API 30)

Android 中最新依赖库的版本支持 API 31 及以上版本,若要支持 API30,则对应的依赖库的版本就需要使用旧版本。 可通过修改模块级 build.gradle 文件来进行适配。 1、android 标签的 targetSdk 和 compileSdk 版本号 根据实际目标设备的 android 版本来…

[特殊字符] Hyperlane:Rust 高性能 HTTP 服务器库,开启 Web 服务新纪元!

🚀 Hyperlane:Rust 高性能 HTTP 服务器库,开启 Web 服务新纪元! 🌟 什么是 Hyperlane? Hyperlane 是一个基于 Rust 语言开发的轻量级、高性能 HTTP 服务器库,专为简化网络服务开发而设计。它支…

RIP V2路由协议配置实验CISCO

1.RIP V2简介: RIP V2(Routing Information Protocol Version 2)是 RIP 路由协议的第二版,属于距离矢量路由协议,主要用于中小型网络环境。相较于 RIP V1,RIP V2 在功能和性能上进行了多项改进&#xff0c…

《LNMP架构+Nextcloud私有云超维部署:量子级安全与跨域穿透实战》

项目实战-使用LNMP搭建私有云存储 准备工作 恢复快照,关闭安全软件 [rootserver ~]# setenforce 0[rootserver ~]# systemctl stop firewalld搭建LNMP环境 [rootserver ~]# yum install nginx mariadb-server php* -y# 并开启nginx服务并设置开机自启 [r…

3DMAX笔记-UV知识点和烘焙步骤

1. 在展UV时,如何点击模型,就能选中所有这个模型的uv 2. 分多张UV时,不同的UV的可以设置为不同的颜色,然后可以通过颜色进行筛选。 3. 烘焙步骤 摆放完UV后,要另存为一份文件,留作备份 将模型部件全部分成…

【新人系列】Golang 入门(十三):结构体 - 下

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12898955.html 📣 专栏定位:为 0 基础刚入门 Golang 的小伙伴提供详细的讲解,也欢迎大佬们…

Spring Boot 自定义商标(Logo)的完整示例及配置说明( banner.txt 文件和配置文件属性信息)

Spring Boot 自定义商标(Logo)的完整示例及配置说明 1. Spring Boot 商标(Banner)功能概述 Spring Boot 在启动时会显示一个 ASCII 艺术的商标 LOGO(默认为 Spring 的标志)。开发者可通过以下方式自定义&a…

Ubuntu虚拟机Linux系统入门

目录 一、安装 Ubuntu Linux 20.04系统 1.1 安装前准备工作 1.1.1 镜像下载 1.1.2 创建新的虚拟机 二、编译内核源码 2.1 下载源码 2.2 指定编译工具 2.3 将根文件系统放到源码根目录 2.4 配置生成.config 2.5 编译 三、安装aarch64交叉编译工具 四、安装QEMU 五、…

【蓝桥杯】2025省赛PythonB组复盘

前言 昨天蓝桥杯python省赛B组比完,今天在洛谷上估了下分,省一没有意外的话应该是稳了。这篇博文是对省赛试题的复盘,所给代码是省赛提交的代码。PB省赛洛谷题单 试题 A: 攻击次数 思路 这题目前有歧义,一个回合到底是只有一个…

【数据结构_4下篇】链表

一、链表的概念 链表,不要求在连续的内存空间,链表是一个离散的结构。 链表的元素和元素之间,内存是不连续的,而且这些元素的空间之间也没有什么规律: 1.顺序上没有规律 2.内存空间上也没有规律 *如何知道链表中包…

音视频 五 看书的笔记 MediaCodec

MediaCodec 用于访问底层媒体编解码器框架,编解码组件。通常与MediaExtractor(解封装,例如Mp4文件分解成 video和audio)、MediaSync、MediaMuxer(封装 例如音视频合成Mp4文件)、MediaCrypto、Image(cameraX 回调的ImageReader对象可以获取到Image帧图像,可转换成YU…

ubuntu 系统安装Mysql

安装 mysql sudo apt update sudo apt install mysql-server 启动服务 sudo systemctl start mysql 设置为开机自启 sudo systemctl enable mysql 查看服务状态 (看到类似“active (running)”的状态信息代表成功) sudo systemctl status mysql …

selenium快速入门

一、操作浏览器 from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By# 设置选项 q1 Options() q1.add_argument("--no-sandbo…

Redis:线程模型

单线程模型 Redis 自诞生以来,一直以高性能著称。很多人好奇,Redis 为什么早期采用单线程模型,它真的比多线程还快吗? 其实,Redis 的“快”并不在于并发线程,而在于其整体架构设计极致简单高效,…

Transformer模型解析与实例:搭建一个自己的预测语言模型

目录 1. 前言 2. Transformer 的核心结构 2.1 编码器(Encoder) 2.2 解码器(Decoder) 2.3 位置编码(Positional Encoding) 3. 使用 PyTorch 构建 Transformer 3.1 导入所需的模块: 3.2 定…

springboot框架集成websocket依赖实现物联网设备、前端网页实时通信!

需求: 最近在对接一个物联网里设备,他的通信方式是 websocket 。所以我需要在 springboot框架中集成websocket 依赖,从而实现与设备实时通信! 框架:springboot2.7 java版本:java8 好了,还是直接…

ES6学习03-字符串扩展(unicode、for...of、字符串模板)和新方法()

一、字符串扩展 1. eg: 2.for...of eg: 3. eg: 二。字符串新增方法 1. 2. 3. 4. 5.

目前状况下,计算机和人工智能是什么关系?

目录 一、计算机和人工智能的关系 (一)从学科发展角度看 计算机是基础 人工智能是计算机的延伸和拓展 (二)从技术应用角度看 二、计算机系学生对人工智能的了解程度 (一)基础层面的了解 必备知识 …

Flutter 2025 Roadmap

2025 这个路线图是有抱负的。它主要代表了我们这些在谷歌工作的人收集的内容。到目前为止,非Google贡献者的数量超过了谷歌雇佣的贡献者,所以这并不是一个详尽的列表,列出了我们希望今年Flutter能够出现的所有令人兴奋的新事物!在…

[数据结构]排序 --2

目录 8、快速排序 8.1、Hoare版 8.2、挖坑法 8.3、前后指针法 9、快速排序优化 9.1、三数取中法 9.2、采用插入排序 10、快速排序非递归 11、归并排序 12、归并排序非递归 13、排序类算法总结 14、计数排序 15、其他排序 15.1、基数排序 15.2、桶排序 8、快速排…