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): 它接受一…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
