git 学习总结
文章目录
- 一、 git 基础操作
- 1、工作区
- 2、暂存区
- 3、本地仓库
- 4、远程仓库
- 二、git 的本质
- 三、分支
- git 命令总结
作者: baron
一、 git 基础操作
如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库.

1、工作区
存放项目代码的地方,他有两种状态 Unmodify 和 modify. ** Unmodify ** 表示当前的文件快照内容与本地仓库文件夹中完全一致. 没有任何修改

Unmodify 经过修改(modify)或者新增(add)文件, 就会变成 modify 状态.

modify 状态可以通过 git checkout恢复到Unmodify状态. 使用 git checkout README.md恢复这个文件的修改. 注意这个操作是不可逆的

modify 状态, 通过 git add添加到 暂存区, 使用 git add test.c添加 test.c 到暂存区

2、暂存区
暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中, 有时候也被称作“索引”. 通俗的将就是临时存放你的改动. 暂存区的文件通过 git reset将修改恢复到工作区的modify 状态.

暂存区的文件通过 git commit将修改同步到本地仓库

3、本地仓库
本地仓库, 存放所有的远程分支的代码, 用来和远程仓库进行交互, HEAD 指向当前所在的分支.本地仓库的代码通过 git push同步仓库到远程仓库.

本地仓库, 通过 git reset --soft回退到暂存区

4、远程仓库
远程仓库, 是指托管在因特网或其他网络中的你的项目的版本库. 通过 git fetch获取到远程代码.

拉到的代码通过 git merge合并到本地分支.

其中 git pull= git fetch+ git merge
二、git 的本质
git 的本质就是一个文件状态记录工具, 用来记录当前目录及其子目录的状态.. 树状结构主要由提交(commits)、目录树(trees)、和 文件(blobs)组成. 他们统一由哈希值进行描述. 一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串.如下所示

commit 用来描述根目录的状态, 也就是某个时间节点的整体的文件状态. 它包含、根目录信息(tree)、父提交(parent)、提交 id(author) 和 提交信息(committer).

树(trees) 表示目录, 通过 tree 形成树状结构连接所有的目录, 最后文件由 blobs 描述. 可以通过命令 git cat-file -p命令用来查看 git 中的对象的内容和结构. 从而跟踪整颗树的状态.

commit 就是当前目录树的一种快照. 即拍下当前目录树的状态.
三、分支
每一个 commit 就是一个文件快照, 分支就是一组 git commit 的结合, 可以通过命令 git log --oneline --decorate --graph --all 显示所有分支的提交历史. 第一次创建的分支默认为树根, 也就是第一个 commit. 以后的分支都在这分支的个基础上分叉.

如图所示该仓库有两个分支分别为 main 和 test 分支. test 分支起始于 main 分支. 在 add a这个 commit 创建出 test 分支. 展开来就如下所示.

在 add b这个 commit 通过 git branch test创建出 test 分支, 使用 git checkout test切换到 test 分支. HEAD 是一个指针,指向当前活动的分支的最新提交(即“当前分支”). 它告诉 Git 当前工作目录和暂存区(index)是基于哪个分支的。如图所示 当前 HEAD 指向 test 分支的.
git 命令总结
| 命令 | 含义 |
|---|---|
git init | 创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件 |
git add | 将新增的文件(add)或者修改(modify)提交到暂存区 |
git commit -m | 将暂存区的文件提交到本地仓库 |
git push | 将本地仓库的文件提交到远程仓库 |
git pull/git fetch/merge | 将远程仓库的文件同步到本地仓库 |
git reset --soft | 将 commit 的修改回退到暂存区 |
git reset | 将暂存区的内容回退到工作区的 modify/add 状态 |
git checkout | 回退工作区的修改(modify)或者新增(add)的文件, 这一步是不可逆的 |
git status | 令查看哪些文件处于什么状态 |
git diff | 比较的是工作目录中当前文件和暂存区域快照之间的差异 |
git log | 查看历史提交 |
git log --stat | 列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了 |
git log --pretty=format:"%h - %an, %ar : %s" | 列出姓名, 修改时间, 和第一条 commit |
git log --pretty=format:"%h - %an, %ar : %s --since=2.weeks | 列出两周之前的提交 |
git log --pretty=format:"%h - %an, %ar : %s --after=2.weeks | 列出两周之后的提交 |
git commit --amend | 将暂存区中的文件提交, 并且合并覆盖上次提交 |
git cat-file -p | 命令用来查看 git 中的对象的内容和结构 |
git log --oneline --decorate --graph --all | 显示所有分支的提交历史 |
git remote -v | 列出远程仓库以及分支 |
git remote add <shortname> <url> | 添加一个远程仓库 |
git remote show | 某一个远程仓库的更多信息 |
git remote rename | 远程仓库重命名 |
git remote rm | 删除远程仓库 |
git branch -a | 打印出所有的远程分支 |
git branch | 创建新分支 |
git branch -b | 创建并切换到新分支 |
git checkout | 出了回退文件修改的功能, 后面跟分支名还能切换分支 |
相关文章:
git 学习总结
文章目录 一、 git 基础操作1、工作区2、暂存区3、本地仓库4、远程仓库 二、git 的本质三、分支git 命令总结 作者: baron 一、 git 基础操作 如图所示 git 总共有几个区域 工作区, 暂存区, 本地仓库, 远程仓库. 1、工作区 存放项目代码的地方,他有两种状态 Unm…...
《如何找到自己想做的事》
Arouse Enthusiasm, Give Scope to Skill, Explore The Essence *摘其两纸 我喜欢打篮球,并不是我真的喜欢这项运动,而是我喜欢团队竞技。我喜欢看书,并不是我真喜欢阅读,而是我想要了解世界运行逻辑。寻找热爱,探寻本…...
Vue中el的两种写法
大家好我是前端寄术区博主PleaSure乐事。今天了解到了Vue当中有关el的两种写法,记录下来与大家分享,希望对大家有所帮助。 方法一 解释 第一种方法我们直接用new创建并初始化一个新的 Vue 实例,并定义了 Vue 实例的数据对象,在给…...
ELK安装(Elasticsearch+Logstash+Kibana+Filebeat)
一、简介 1.1、软件简介 ELK其实是Elasticsearch,Logstash 和 Kibana三个产品的首字母缩写,这三款都是开源产品。 1.1.1、Elasticsearch简介 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析…...
VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法
文章目录 read ECONNREST查看是否仍是 Copilot 会员查看控制台输出网络连接问题浏览器设置问题笔者的话 read ECONNREST 最近使用 Copilot 时一直出现 read ECONNREST 问题,这个表示连接被对方重置了,就是说在读取数据时连接被关闭。 我首先怀疑是不是…...
充电桩浪涌保护方案—保障充电设施安全稳定运行的关键
在当今新能源汽车蓬勃发展的时代,充电桩作为电动汽车的“加油站”,其重要性不言而喻。然而,由于其复杂的电气环境和暴露于户外的特点,充电桩容易受到浪涌的影响。浪涌可能来自雷电、电网故障、大功率设备的启停等,对充…...
Python包管理工具pip
1、安装pip cmd管理员模式打开控制台 python -m pip install --upgrade pip 2、添加pip环境变量 pip 路径 C:\Users\1\AppData\Local\Programs\Python\Python312\Scripts...
最全国内13家DNS分享 解决网页被恶意跳转或无法打开问题
腾讯 DNS (DNSPod) 腾讯 DNS 是由 DNSPod 提供的公共免费 DNS 服务。DNSPod 已被腾讯收购,现在属于腾讯公司所有。该 DNS 服务稳定性和连通性良好,经测试在海外也可以使用。 DNSPod 提供了 IPv4、IPv6 DNS 和 DoT/DoH 服务。 IPv4 地址: 119.29.29.29…...
最新站长工具箱源码,拥有几百个功能,安装教程
最新站长工具箱源码,拥有几百个功能,安装教程 在 Docker 上运行 docker run -e LAFREGIONCN -e APPLANGzh_CN --name my-miaoda -v ~/.miaoda-docker:/root/.miaoda -d -p 0.0.0.0:39899:39899 codegentoolbox/laftools-linux-x64:latestNOTE: 默认端…...
【算法/训练】:动态规划(线性DP)
一、路径类 1. 字母收集 思路: 1、预处理 对输入的字符矩阵我们按照要求将其转换为数字分数,由于只能往下和往右走,因此走到(i,j)的位置要就是从(i - 1, j)往下走&#…...
计算巨头 Azure、AWS 和 GCP 的比较
云计算领域由三大主要参与者主导:Microsoft Azure、Amazon Web Services (AWS) 和 Google Cloud Platform (GCP)。每个平台都为希望利用云提供基础设施、平台服务等的企业提供强大的功能。在本文中,我们将深入探讨这些平台之间的差异,重点关注…...
Thinkphp5跨域问题常见的处理方法
在ThinkPHP5中,处理跨域问题通常涉及配置中间件或直接在控制器中设置响应头。以下是几种常见的解决跨域问题的方法: 1. 使用中间件处理跨域 你可以创建一个中间件来专门处理跨域请求。这个中间件会检查请求的来源,并设置相应的响应头来允许…...
Matlab编程资源库(9)数据插值与曲线拟合
一、一维数据插值 在MATLAB中,实现这些插值的函数是interp1,其调用格式为: Y1interp1(X,Y,X1,method) 函数根据X,Y的值,计算函数在X1处的值。X,Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量…...
matplotlib的科研绘图辅助
matplotlib的科研绘图辅助 趁着暑假,与和鲸科技合作了一个python绘图的教程,作为暑期夏令营的一小部分,主要内容是介绍如何使用matplotlib、pandas、seaborn和plotnine进行医学科研绘图,感兴趣的可以通过如下地址进行访问&#x…...
C++内存管理(候捷)第五讲 笔记
GNU C对allocators的描述 new_allocator 和malloc_allocator,它们都没有特别的动作,无非底部调用operator new和malloc。它们没有用内存池 区别:::operator new是可重载的 智能型的allocator,使用内存池,分一大块然后…...
谷粒商城实战笔记-63-商品服务-API-品牌管理-OSS获取服务端签名
文章目录 一,创建第三方服务模块thrid-party1,创建一个名为gulimall-third-party的模块2,nacos上创建third-party命名空间,用来管理这个服务的所有配置3,配置pom文件4,配置文件5,单元测试6&…...
详细介绍BIO、NIO、IO多路复用(select、poll、epoll)
BIO、NIO、IO多路复用 BIO(Blocking IO)NIO(Non-blocking IO) 同步非阻塞IOIO多路复用selectpollepoll Redis的IO多路复用 BIO(Blocking IO) 最基础的IO模型,当进行IO操作时,线程会被阻塞,直到操作完成。 比如read和write,通常IO…...
昇思25天学习打卡营第11天|xiaoyushao
今天分享ResNet50迁移学习。 在实际应用场景中,由于训练数据集不足,所以很少有人会从头开始训练整个网络。普遍的做法是,在一个非常大的基础数据集上训练得到一个预训练模型,然后使用该模型来初始化网络的权重参数或作为固定特征提…...
为什么样本方差(sample variance)的分母是 n-1?
样本均值与样本方差的定义 首先来看一下均值,方差,样本均值与样本方差的定义 总体均值的定义: μ 1 n ∑ i 1 n X i \mu\frac{1}{n}\sum_{i1}^{n} X_i μn1i1∑nXi 也就是将总体中所有的样本值加总除以个数,也可以叫做总…...
编解码器架构
一、定义 0、机器翻译是序列转换模型的一个核心问题, 其输入和输出都是长度可变的序列。 为了处理这种类型的输入和输出, 我们设计一个包含两个主要组件的架构: 第一个组件是一个编码器(encoder): 它接受一…...
腾讯优图视觉模型应用:Youtu-VL-4B-Instruct在内容审核中的实战
腾讯优图视觉模型应用:Youtu-VL-4B-Instruct在内容审核中的实战 每天,互联网上会产生数十亿张图片和视频。对于内容平台来说,如何确保这些内容安全合规,同时控制审核成本,一直是个头疼的问题。传统的人工审核效率低、…...
Materials Studio8.0在CentOS7.9环境下的安装与配置指南
1. 环境准备与系统检查 在CentOS 7.9上安装Materials Studio 8.0之前,我们需要确保系统环境满足最低要求。我遇到过不少因为环境配置不当导致的安装失败案例,这里分享几个关键检查点: 首先检查主机名是否包含特殊字符。Materials Studio对主机…...
Infiniband网络排错指南:从`ibstatus`异常到OpenSM日志分析,一次搞定常见连接问题
Infiniband网络排错实战:从基础诊断到高级调优的全链路指南 当40Gbps的Infiniband链路突然降速到10Gbps,或者关键节点的OpenSM服务频繁崩溃时,每个运维工程师都能体会到那种指尖发凉的焦虑。本文将带你穿越Infiniband故障迷雾,构建…...
Wan2.2-I2V-A14B与数据库联动:自动化生成电商商品动态详情页视频
Wan2.2-I2V-A14B与数据库联动:自动化生成电商商品动态详情页视频 1. 电商视频制作的痛点与机遇 电商平台每天都有大量新品上架,传统的商品详情页视频制作方式面临巨大挑战。一个中型电商平台每月可能新增上千款商品,如果每款商品都需要人工…...
HunyuanVideo-Foley私有部署全攻略:RTX4090D专用优化,轻松搭建AI视频生成环境
HunyuanVideo-Foley私有部署全攻略:RTX4090D专用优化,轻松搭建AI视频生成环境 在AI视频生成领域,最令人沮丧的莫过于看着别人的演示视频效果惊艳,而自己却卡在环境配置和模型部署的泥潭中。从CUDA版本冲突到显存不足崩溃…...
【学术干货免费领】200+学术海报模板免费领|科研展示零成本,高效出图不内耗 | 学术会议海报模板,适配国际国内各类学术场合 | 硕博研究生必需,全学科适配,助力科研成果高光出圈
重磅福利来袭!200学术海报模板,全程免费领取,零成本解锁科研展示新方式!适配以下各类科研相关人群:硕博研究生群体包括硕士研究生和博士研究生适用于不同研究阶段:从开题报告撰写到学位论文完成特别适合需要…...
Nuitka打包Python脚本为.exe的完整避坑指南(含Selenium解决方案)
Nuitka打包Python脚本为.exe的完整避坑指南(含Selenium解决方案) 将Python脚本打包成独立的可执行文件是许多开发者面临的常见需求,尤其是当需要分发工具或应用给没有Python环境的用户时。Nuitka作为一款强大的Python编译器,能够将…...
用Python代码和蒙特卡洛方法,手把手教你估算强化学习中的状态价值(附完整代码)
用Python实现蒙特卡洛方法估算强化学习状态价值的实战指南 马尔可夫决策过程(MDP)是强化学习的数学基础框架,而状态价值函数则是评估策略优劣的核心指标。许多初学者在理解抽象的状态价值概念时会遇到困难——这些数字究竟是如何从实际交互中…...
LangGraph实战:从零构建并部署一个多功能智能体
1. LangGraph框架概述:新一代智能体开发范式 在人工智能应用开发领域,智能体(Agent)技术正经历着从简单问答到复杂任务执行的进化。LangGraph作为LangChain生态中的新一代开发框架,彻底改变了传统链式结构的局限性。我…...
IP5306电源芯片的‘怪脾气’:实测开机半分钟就休眠?手把手教你两个硬件调试技巧
IP5306电源芯片实战调试:破解自动休眠难题的硬件级方案 实验室里,示波器屏幕上那条本该稳定的电压线突然跌落至零,系统再次陷入休眠——这已经是今天第七次重现IP5306芯片的"怪脾气"。作为一款广泛应用于移动电源的高集成度SOC&…...
