Git的基本命令以及其原理(公司小白学习)

从 Git 配置、代码提交与远端同步三部分展开,重点讲解 Git 命令使用方式及基本原理。 

了解这些并不是为了让我们掌握,会自己写版本控制器,更多的是方便大家查找BUG,解决BUG ,这就和八股文一样,大多数都用不着,但用着了,就会知道他的妙处。      

项目初始化:

代码: git init
其他的一些参数

git初始化之后的一些文件的作用:
 

  1. HEAD

    • 指向当前分支的最新提交(commit)。它是一个符号引用,通常指向 refs/heads/master 或其他当前分支。

  2. config

    • 存储仓库的配置信息,如用户信息、远程仓库地址、合并策略等。这些配置可以是全局的、系统的或仓库特定的。

  3. hooks

    • 包含客户端或服务器端的钩子脚本。这些脚本在特定的 Git 操作(如提交、推送等)之前或之后自动执行。常见的钩子包括:

      • pre-commit:在提交之前运行,用于检查代码风格或测试。

      • post-commit:在提交之后运行,用于通知或其他操作。

      • pre-push:在推送之前运行,用于检查推送的安全性。

      • commit-msg:在提交消息编辑完成后运行,用于验证提交消息的格式。

  4. objects

    • 存储所有的数据对象,包括:

      • blobs:文件内容。

      • trees:目录结构。

      • commits:提交对象,包含指向父提交、树对象和作者信息的指针。

      • tags:标签对象,指向特定的提交。

  5. info

    • 包含一些元数据,如 exclude 文件,用于定义不在 .gitignore 中列出的排除规则。

  6. pack

    • 存储打包的对象,以节省磁盘空间。这些打包文件是一系列压缩的对象,可以通过索引文件快速访问。

  7. refs

    • 存储引用,包括:

      • heads:本地分支的引用。

      • tags:标签的引用。

      • remotes:远程分支的引用(如果存在)。

不同级别的Git配置:

系统--全局--本地 配置依次降低,低级别会覆盖高级别

用户名的配置:

Instead of配置:(修改url)

git 命令配置:

git Remote 配置:

查看 Remote :

代码: git Remote -v

添加 Remote:

代码:

结果

git Remote -v会发现多出

git 的config文件中多出(cat .git/config):

区分HTTP和SSH Remote的区别:

主要是身份验证的协议不同,一个是HTTP验证密码,一个是SSH验证密码:

HTTP:

SSH:

如果你发现ssh配置了,还是连不上,可以切换秘钥的协议,把rsa换成其他的就行

ssh-keygen -t rsa -C "这里换上你的邮箱"

Git add:

假如我们先 touch readme.md添加文件,在tree .git文件会发现创建了,却无法找到,这就是因为创建的文件放在了工作区,你需要git add readme.md才会将这份文件上传到暂存区,tree .git可以查看

然后。如图添加进去后,我们可以通过git cat-file -p 你的文件加密后的名称,查看你文件的信息

Git commit:

我们先git commit -m "readme.md"将文件commit后查看,会发现比原来会多了两个文件:

然后我们查看这些提交的东西都是些什么:

我们可以看到他的类型,作者,上传者等等信息。

Object:

git cat-file -p XXX 查询到的文件类型有:

我们如何把这些文件串联到一起呢?它底层是如何做到的呢?

新建分支:

git checkout -b "test"

创建完成新的分支后,我们在从master和test两个分支查看readme.md,就会发现其实二者查询到的文件是同一个,这时,就要映引出我们的Ref文件了

Ref文件:

创建Tag:

代码:git tag v0.0.1

Annotation Tag:(附属标签)

写发布版本信息等描述信息

代码: git tag -a v0.0.2 -m "这里写你的描述“

多了红框内的两份文件,而且查询也查询的文件不同。

这里有第四种object类型commit,有这个文件指向另外一个文件。

追溯历史版本:

修改历史版本:

修改之后,我们通过git log查看会发现两者的名称已经变了,再tree git查看也可以看到Object文件里多了一个commit文件,意味着就会有两份文件,一个修改前,一个修改后,儿修改前的文件的ref会转移到修改后的全新文件上,没有ref的old文件,就被成为悬空文件。查看悬空文件的代码:

由此,我就可以引出一个新的概念,叫做Git GC,他和我们的Java中的GC回收器,垃圾回收算法这些的相似。都是垃圾回收的效果。

git reflog expire --expire=now -- allgit gc --prune=now

本质上是多加了打包和package-ref这个关联文件

Git是如何多人合作以及远端同步的呢?

git push (是将本地同步到远端的方式)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号与系统初识---信号的分类

文章目录 0.引言1.介绍2.信号的分类3.关于周期大小的求解4.实信号和复信号5.奇信号和偶信号6.能量信号和功率信号 0.引言 学习这个自动控制原理一段时间了,但是只写了一篇博客,其实主要是因为最近在打这个华数杯,其次是因为在补这个数学知识…

【初识扫盲】厚尾分布

厚尾分布(Fat-tailed distribution)是一种概率分布,其尾部比正态分布更“厚”,即尾部的概率密度更大,极端值出现的概率更高。 一、厚尾分布的特征 尾部概率大 在正态分布中,极端值(如距离均值很…

--- 多线程编程 基本用法 java ---

随着时代的发展,单核cpu的发展遇到了瓶颈,而要提高算力就要发展多核cpu,他能允许多个程序同时运行,这时并发编程他能利用到多核的优势,于是就成为了时代所趋了 其实多进程编程也能进行实现并发编程,只不过…

Linux网络_套接字_UDP网络_TCP网络

一.UDP网络 1.socket()创建套接字 #include<sys/socket.h> int socket(int domain, int type, int protocol);domain (地址族): AF_INET网络 AF_UNIX本地 AF_INET&#xff1a;IPv4 地址族&#xff0c;适用于 IPv4 协议。用于网络通信AF_INET6&#xff1a;IPv6 地址族&a…

idea分支合并代码

步骤一 首先把两个分支的代码都提交了&#xff0c;保持和远程仓库一致&#xff0c;不要有任何没提交的代码。如果一些程序的yml配置文件&#xff0c;不想提交&#xff0c;可以复制一个&#xff0c;不受git管理。如果有没有提交的代码&#xff0c;合并分支的时候就会提示那些代…

Java安全—SPEL表达式XXESSTI模板注入JDBCMyBatis注入

前言 之前我们讲过SpringBoot中的MyBatis注入和模板注入的原理&#xff0c;那么今天我们就讲一下利用以及发现。 这里推荐两个专门研究java漏洞的靶场&#xff0c;本次也是根据这两个靶场来分析代码&#xff0c;两个靶场都是差不多的。 https://github.com/bewhale/JavaSec …

docker虚拟机平台未启用问题

在终端中输入如下代码&#xff0c;重启电脑即可 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 对于Docker Desktop - Unexpected WSL error问题 参考链接 解决WSL2与docker冲突问题

微服务主流框架和基础设施介绍

概述 微服务架构的落地需要解决服务治理问题&#xff0c;而服务治理依赖良好的底层方案。当前&#xff0c;微服务的底层方案总的来说可以分为两 种&#xff1a;微服务SDK &#xff08;微服务框架&#xff09;和服务网格。 微服务框架运行原理&#xff1a; 应用程序通过接入 SD…

微信小程序集成Vant Weapp移动端开发的框架

什么是Vant Weapp Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网地睛&#xff1a;介绍 - Vant Weapp (vant-ui.gith…

(STM32笔记)十二、DMA的基础知识与用法 第二部分

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 DMA的基础知识与用法 二、DMA传输设置1、数据来源与数据去向外设到存储器存储器到外设存储器到存储器 2、每次传输大小3、传…

C语言 - 可变参数函数 va_list、va_start、va_arg、va_end

目录 一、_INTSIZEOF宏分析 二、可变参数函数介绍 1、va_list 2、va_start 3、va_arg 4、va_end 三、使用介绍 示例1&#xff1a; 示例2&#xff1a; 一、_INTSIZEOF宏分析 #define _INTSIZEOF(n) ((sizeof(n)sizeof(int)-1)&~(sizeof(int) - 1) ) 功能&#x…

【Rust自学】12.2. 读取文件

12.2.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print)&#xff0c;是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步&#xff1a; 接收命令行参数读…

记一次OpenEuler Linux磁盘分区表损坏的数据恢复

问题复现 原本有一台GIS地图服务器存放大量数据&#xff0c;突然有一天磁盘满了&#xff0c;于是运维人员照常进行磁盘扩容。但由于误操作&#xff0c;导致使用fdisk的时候把分区表损坏了&#xff0c;表现如下&#xff1a; 这里可以看到启动时能看到xvda被分为了xvda1和xvda2…

二手车交易系统的设计与实现(代码+数据库+LW)

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统二手车交易信息管理难度大&#xff0c;容错率低&#xf…

【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk

之前有一期我们体验了阿里开源的半身数字人项目EchoMimicV2&#xff0c;感兴趣的小伙伴可跳转至《AI半身数字人开箱体验——开源项目EchoMimicV2》&#xff0c;今天带大家来体验腾讯开源的数字人音唇同步模型MuseTalk。 MuseTalk 是一个实时高品质音频驱动的唇形同步模型&#…

如何禁用 PySpark 在运行时打印信息

我已经开始使用 PySpark。PySpark 的版本是3.5.4&#xff0c;它是通过 进行安装的pip。 这是我的代码&#xff1a; from pyspark.sql import SparkSession pyspark SparkSession.builder.master("local[8]").appName("test").getOrCreate() df pyspark…

HTML拖拽功能(纯html5+JS实现)

1、HTML拖拽--单元行拖动 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><…

GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文解读

论文地址&#xff1a;https://arxiv.org/abs/2103.10360 参考&#xff1a;https://zhuanlan.zhihu.com/p/532851481 GLM混合了自注意力和masked注意力&#xff0c;而且使用了2D位置编码。第一维的含义是在PartA中的位置&#xff0c;如5 5 5。第二维的含义是在Span内部的位置&a…

华为数通HCIE备考经验分享

在分享我的考试心得前我先介绍一下我自己&#xff0c;我叫郑同学&#xff0c;22岁&#xff0c;就读于深圳信息职业技术学院移动通信技术专业&#xff0c;在2024年的9月&#xff0c;我成功获得了HCIE-Datacom证书。 考证契机 我的备考之旅始于去年2023年的华为ICT大赛。在这场…

Web开发(二)CSS3基础与进阶

Web开发&#xff08;二&#xff09;CSS3基础与进阶 写在前面 参考黑马程序员前端Web教程做的笔记&#xff0c;主要是想后面自己搭建网页玩。 这部分是前端HTML5CSS3移动web视频教程的CSS3基础与进阶部分&#xff0c;包括CSS3的选择器、文字控制属性、背景属性、显示模式等CS…