【Git】01-Git基础
文章目录
- Git基础
- 1. 简述
- 1.1 版本管理演变
- 1.2 Git的特点
- 2. Git安装
- 2.1 安装文档
- 2.1 配置user信息
- 3. 创建仓库
- 3.1 场景
- 3.2 暂存区和工作区
- 4. 重命名
- 5. 常用git log版本历史
- 5.1 查看当前分支日志
- 5.2 简洁查看日志
- 5.3 查看最近指定条数的日志
- 6. 通过图形界面工具查看版本
- 7. 探秘.git目录
- 7.1 .git文件目录
- 7.2 HEAD文件
- 7.2 config文件
- 7.2 refs文件
- 7.3 object文件*
- 8. commit/tree/blob三个对象关系
- 8.1 Git对象关系
- 9. 分离头指针情况下的注意事项
Git基础
1. 简述
1.1 版本管理演变



1.2 Git的特点
- 最优的存储能力
- 非凡的性能
- 开源
- 很容易做备份
- 支持离线操作
- 很容易定制工作流程
2. Git安装
2.1 安装文档
参照官方文档
Git官方文档
2.1 配置user信息
配置user信息是为了在代码review或者变动产生时,进行邮件的提醒
- 配置user.name
git config --global user.name ‘your_name’
- 配置user.email
git config --global user.email ‘your_email@domain.com’
config的三个作用域

3. 创建仓库
3.1 场景
- 把已有项目代码纳入Git管理
$ cd 项目代码所在文件夹
$ git init
- 新建的项目直接用Git管理
$ cd 某个文件夹
$ git init your_proiect # 会在当前路径下创建和项目名称同名的文件夹
$ cd your_project
查看当前git暂存区git状态
git status
查看当前git日志
git log
git add 文件名称
git commit -m’对添加文件的描述’
3.2 暂存区和工作区

在工作目录上的修改的变更,Git会先添加到暂存区,暂存区的信息可以覆盖本地的工作目录,同时也可以提交到历史版本中
文件复制
cp 源文件路径 复制后新文件名称
4. 重命名
清除暂存区,工作区信息
git reset --hard
重命名
git mv 需要变更的文件名 变更后的文件名
eg: git mv readme readme.md // 将readme重命名为readme.md
5. 常用git log版本历史
5.1 查看当前分支日志
git log

5.2 简洁查看日志
git log – oneline

5.3 查看最近指定条数的日志
git log -n 1 #查看最近1条日志

这里可以搭配 --oneline使用
git log -n 1 --oneline

查看本地分支
git branch -v
创建分支
git checkout -b <branch_name> #创建一个新的分支并切换到该分支
这个命令相当于以下两个命令的组合
git branch <branch_name> # 创建一个新分支
git checkout <branch_name> # 切换到新分支
当运行git checkout -b <branch_name>时,Git会在当前提交的基础上创建一个新的分支,并将HEAD指向该分支
查看所有分支的日志
git log --all
会显示所有分支的提交历史。这包括本地分支和远程分支。
git log --all --graph #图形化显示演进历史
6. 通过图形界面工具查看版本
gitk #弹出并显示图形界面


7. 探秘.git目录
7.1 .git文件目录

7.2 HEAD文件
通过 cat HEAD命令打开HEAD文件显示信息如下:

HEAD是一个文本文件,内容这是一个引用,当分支发生切换时,HEAD的内容会发生变化
7.2 config文件
通过 cat config查看文件信息如下

这里会记录和本地仓库相关的配置信息
7.2 refs文件
通过 cd refs切换值refs文件夹,查看里面内容为:

refs中存在tags和heads,意味着git仓库可以有很多tag标签(里程碑)和多个分支(heads)
heads中记录所有的分支信息
heads中内容记录了分支的信息,查看单个分支文件内容发现,其中记录的是分支的指针指向哪个commit
查看文件类型
git cat-file -t 文件名
查看文件内容
git cat-file -p 文件名
7.3 object文件*
object中存放的是多个文件夹和pack(松散文件的打包体),info信息
进入到其中任一普通文件夹,文件中记录的是一个hash值,将文件将的名称+hash拼接在一起,通过类型查看命令可以发现,其类型为tree。
查看tree文件信息,发现内部有blob对象
8. commit/tree/blob三个对象关系
8.1 Git对象关系

一个commit只对应一个tree,这个tree中存放的是当前commit对应的视图,这个视图存放了快照集合,这个集合是存放了当前commit对应的本项目仓库的所有文件和文件夹的快照
tree中还可以包含tree和bolb,类似于文件夹中包含文件夹和文件
git中如果文件内容相同,那么他们所对应的blob是相同的
9. 分离头指针情况下的注意事项
分离头指针指的是当前正工作在没有分支的状态下,编写的文件依然可以commit,但是并不会挂在任何一个分支下,如果这时候再切换分支,那么在分离头指针状态下的提交代码很可能会被当成垃圾被Git清理掉。
如果日常工作中对代码做一些尝试性编辑,并不打算保存,那么分离头指针就有了很好的用处。
相关文章:
【Git】01-Git基础
文章目录 Git基础1. 简述1.1 版本管理演变1.2 Git的特点 2. Git安装2.1 安装文档2.1 配置user信息 3. 创建仓库3.1 场景3.2 暂存区和工作区 4. 重命名5. 常用git log版本历史5.1 查看当前分支日志5.2 简洁查看日志5.3 查看最近指定条数的日志 6. 通过图形界面工具查看版本7. 探…...
【Vue2.0源码学习】生命周期篇-初始化阶段(initState)
文章目录 1. 前言2. initState函数分析3. 初始化props3.1 规范化数据3.2 initProps函数分析3.3 validateProp函数分析3.4 getPropDefaultValue函数分析3.5 assertProp函数分析 4. 初始化methods5. 初始化data6. 初始化computed6.1 回顾用法6.2 initComputed函数分析6.3 defineC…...
专升本英语零基础学习
1. 词法 1.1 名词 名词(n.),是词类的一种,属于实词。他表示人,物,事,地点或抽象概念的统一名称。 1.1 名词的含义 名词(n.),是词类的一种,属于实词。他表示人&#x…...
QUIC协议连接详解(二)
目录 一:RTT解释 二:QUIC 1-RTT连接 三:QUIC 0-RTT连接 一:RTT解释 在介绍QUIC协议的连接之前先科普一下什么是RTT。RTT是Round-Trip Time的英文缩写,翻译过来就是一趟来回的时间即往返时延。时间计算即从发送方发送…...
JAVA 经常遇到一些问题【第二部分36~51】
重拾者: 每日记录至目前(记录51种不同场景的问题可参考解决方案) 异常就两部分: 1、excepiton信息: 报错产生的原因 2、at开头表示: 异常产生的代码位置。 欢迎关注本人微信公众号:AIM…...
蓝桥杯打卡Day6
文章目录 N的阶乘基本算术整数查询 一、N的阶乘OI链接 本题思路:本题是关于高精度的模板题。 #pragma GCC optimize(3) #include <bits/stdc.h>constexpr int N1010;std::vector<int> a; std::vector<int> f[N];std::vector<int> mul(in…...
spark集群问题汇总
一、 磁盘问题 问题描述可能原因解决措施core节点磁盘不足, 并且持续增加未开启spark-history的日志清理打开日志清理: spark.history.fs.cleaner.enabled task节点磁盘不足 APP应用使用磁盘过大: 1. 严重的数据倾斜 2. 应用本身数据量大 1. 解决数据倾斜 2. 加大资源, 增加e…...
WebServer 解析HTTP 请求报文
一、TCP 状态转换 浏览器访问网址,TCP传输全过程 二、TCP协议的通信过程 三、TCP 通信流程 // TCP 通信的流程 // 服务器端 (被动接受连接的角色) 1. 创建一个用于监听的套接字- 监听:监听有客户端的连接- 套接字:这…...
Golang开发--interface的使用
在Go语言中,接口(interface)是一种特殊的类型,它定义了一组方法的集合。接口为实现多态性提供了一种机制,允许不同的数据类型实现相同的方法,从而可以以统一的方式处理这些不同类型的对象。接口在Go中广泛用…...
2023 年高教社杯全国大学生数学建模竞赛题目 B 题 多波束测线问题
B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀速直线传播,在不同界面上产生反射,利用这一原理,从测量船换能器垂直向海底发射声波信号,并记录从声波发射到信号接收的传播…...
leetcode算法题--生成特殊数字的最少操作
原题链接:https://leetcode.cn/problems/minimum-operations-to-make-a-special-number/description/ 感觉还是比较难想到的。。 func minimumOperations(num string) int {res : len(num)if strings.Contains(num, "0") {res-- }f : func(tail string)…...
数学建模--决策树的预测模型的Python实现
目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ 决策树的应用:对泰坦尼克号数据集成员进行预测生死 算法流程还是比较简单的,简单学习一下决策树跟着注释写即可 文章参考:https://zhuanlan.zhihu.com/p/133838427 算法种遇上sklear…...
Linkstech多核并行仿真丨光伏发电系统模型及IEEE 39 bus模型多核并行实测
新能源场站和区域电网作为复杂且具有动态特性的大规模电力系统,需要实时仿真测试来验证其性能、稳定性和响应能力。在这种背景下,多核并行仿真运算显得尤为重要。多核并行仿真能够同时处理电力系统的复杂模型,加速仿真过程,实现接…...
在STS里使用Gradle编译Apache POI5.0.0
1、到官方下面地址下载Gradle最新的版本 Gradle Distributions 2、解压后拷贝到D盘下D:\gradle-8.3-rc-4里 3、配置环境变量 新建系统变量 GRADLE_HOME ,值为 路径 4、在 Path 中添加上面目录的 bin 文件路径 (可以用 %GRADLE_HOME%\bin,…...
golang - 使用有缓冲通道控制并发数
在 Go 语言中,使用带缓冲的通道(buffered channels)可以有效地控制并发数。带缓冲的通道可以让你限制同时运行的 goroutine 数量,从而避免过度并发导致的资源耗尽问题。以下是一个使用带缓冲通道控制并发数的示例: pa…...
AUTOSAR测试指标
测试方法 1、测试相关时间2、检查各个状态下ECU的情况3、程序编写 1、测试相关时间 序号时间参数描述测试方法时间1T_Wakeup从睡眠模式到网络模式,(上位机)发送NM报文的时间唤醒源的时间100ms2T_START_NM从睡眠模式到网络模式,DUT发送的第一帧NM报文捕获…...
Vue 前端项目使用alibaba矢量库svg图标
Vue 前端项目使用alibaba矢量库svg图标 这里主要是记录 vue项目中使用阿里矢量库图标的操作流程,方便以后查阅!!! 一、简介 iconfont 是由阿里巴巴体验团队打造的,一款设计和前端开发的便捷工具.拥有着很强大且图标内…...
蓝桥杯官网填空题(距离和)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为 2,L 和 Q 的距离为 5。 对于一个字符串,我们称字符串中两两字符…...
【座位调整】Python 实现-附ChatGPT解析
疫情期间课堂的座位进行了特殊的调整,不能出现两个同学紧挨着,必须隔至少一个空位,给你一个整数数组desk,表示当前座位的占座情况,由若于0和1组成,其中 0 表示没有占位,1表示占位。在不改变原有座位秩序情况下,还能安排坐几个人? 输入描述: 第一行是一个数组,表示作为…...
前端面试基础面试题——5
1.react 和 vue 的区别是什么? 2.虚拟DOM的原理?优点与缺点? 3.类组件和函数组件之间的区别是? 4.state 和 props 区别是什么? 5.React 中 refs 是做什么的? 6.什么是高阶组件? 7.讲讲什么…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
