git基础及原理相关解析
git入门
- 结构
- 基本操作
- help
- 提交
- 分支
- git merge和git rebase对比
- 拉取
git文档
结构
- 工作区:电脑目录中能看到的文件
- 暂存区:使用
git add *操作提交文件的位置,一般位于.git\index,这个文件里面存储了当前位于暂存区的所有文件的校验和 - 版本库:隐藏目录
.git - 忽略文件:
.gitignore文件,可以将git提交时需要忽略的文件添加到这里面,如日志等文件,这个文件中可以使用一些匹配规则来批量匹配
简单来说,工作区写完内容之后,使用git add命令提交内容到暂存区,暂存区内容存储在.git\index里面,可以使用git ls-files --stage命令查看内容,里面会给出暂存区中每一个文件的校验和,可以使用git cat-file -p checksum来查看指定的checksum所对应文件的内容
基本操作
help
- 可以使用
git help --web order在网页端查看order命令的具体命令格式
提交
- 首先
git add *可以将当前目录下所有文件移入暂存区,git reset *将当前目录下所有不在暂存区的文件移出暂存区,当执行git add命令的时候实际上是把当前提交到暂存区的所有文件生成一个快照,并计算文件的SHA-1哈希值 - 当文件进入暂存区之后,可以使用
git commit相关命令将暂存区文件提交至版本库,这时,git将会创建一个包含当前暂存区快照的提交对象,并将其保存到git的对象数据库中,这个提交对象包含了作者、提交时间、提交信息等元数据,以及指向前一个提交的指针。然后我们可以使用git push相关命令提交到远程仓库 - 如果想添加远程仓库地址,使用
git remote add origin [url],如果需要更改远程仓库地址,使用git remote set-url [url]
提交例子如下,每次提交会在原来的节点后面新增一个节点,形成一条链
a - b - c - d - e
分支
- 但是我们的git记录不会总只有一条链路,因为一个工程往往是有很多人协同开发的,一般地,我们会有一个
master分支,这表示主分支,也就是当前的最新版本;除此之外,我们会有很多其他的开发分支、测试分支、bugfix分支等等,例如dev分支,develop分支,hotfix分支等 git有HEAD指针的概念,这个指针指向的是git提交记录中的某个节点,它指向的节点就是当前目录下的文件状态- 如下图所示
a - b - c - d - e (master)\ f - g - h (feature)
上图中,b节点是c和f节点的父节点,也就是说,如果我们的feature开发完了,需要合并到master分支上,需要执行rebase或者merge命令。在此图中,feature工作目录下的HEAD指针指向的是h节点
- 使用
git merge或者git rebase命令可以将其他分支的代码合并到指定分支,这两种合并方法有本质上的区别
git merge和git rebase对比
- 如下图所示
a - b - c - d - e (master)\f - g - h (feature)
- 现在我们想把
feature合并到master,如果使用git merge,得到的会是下图
a - b - c - d - e - i (master)\ /f - g - h (feature)
- 如果你有一些开发经验的话,你经常会看到在提交
MR的时候,会有一条git记录,里面的描述是Merge request…,这其实就是上面的i节点,也就是把两条分支的最后一个节点合并起来,并保存了这两个节点的提交记录的所有信息。不过这里面还有一些合并细节,比如--ff,--no-ff,--squash等,默认情况下使用的是normal merge,或者说递归合并,会将两个分支的更改合并到一个新的提交中,如果存在冲突,需要解决冲突 - 在
merge的时候,git会尝试使用三路合并的方法进行,如上图,e和h合并的时候,会提取出e和h的最近公共祖先,也就是b节点,观察e和h相对于b节点的变化,如果都有变化且变化都不同则需要手动进行冲突的处理,这里的变化指的是存在两节点都对某个文件的某行进行了处理且处理方法不同
- 那么如果使用
git rebase命令进行分支合并,注意它的合并是根据提交记录的时间来进行的,假设按照字母顺序表示提交的时间,也就是说,a先于b提交,如下图所示
a - b - c - d - e (master)\ f - g - h (feature)
- 那么当对
e和h进行rebase操作的时候,结果会是下面这样
a - b - c - d - e (master)\ f - g - h (feature)
- 可以看到,最终的提交记录是一条线,这是比较乐观的情况,因为
e节点的提交时间刚好在feature的f节点的提交时间之前,那么如果是下面这种提交记录的话,执行rebase会如何呢
a - b - e - f - h (master)\ c - d - g (feature)
- 结果应该是下图
a - b - e - f - h (master)\c - d - g (feature)
- 那么这个时候一旦
feature向master上合并就会出现问题了,因为feature如果想合并到master,需要调整master节点之间的先后关系,那么这种情况下,就会把master分支的e,f,h节点合并到feature并以feature的形式提交到master上,这也就是git提交记录里面可能有who创建并由who提交这种记录出现的原因
拉取
git clone相关命令可以将远程仓库代码拉到本地git fetch和git pull命令可以把远程仓库的最新提交和分支信息拉到本地,但是fetch不会自动合并,而是用户之后再根据需要手动合并,而git pull命令会自动进行合并,实际上,git pull包含了fetch和merge两个过程- 如果你想创建本地分支并绑定到远程分支,需要执行命令
git checkout -b 本地分支名x origin/远程分支名x
相关文章:
git基础及原理相关解析
git入门 结构基本操作help提交分支git merge和git rebase对比 拉取 git文档 结构 工作区:电脑目录中能看到的文件暂存区:使用git add *操作提交文件的位置,一般位于.git\index,这个文件里面存储了当前位于暂存区的所有文件的校验…...
【Python机器学习】零基础掌握isotonic_regression等渗回归
遇到了数据不一致的困扰吗? 在市场分析、医疗研究或者其他数据密集型领域,经常会遇到一个问题:如何从一组不完全一致或者有噪音的数据中提取出有用的信息?例如,假设一家餐厅想要根据顾客的评分和消费金额来调整菜单。 顾客评分消费金额(元)顾客年龄访问次数4.21002533.…...
支持宏的文本编辑器提高生产力
场景 我们知道很多文本/代码编辑器支持宏的录制、重放、保存,甚至可以与快捷键命令结合的功能,快速实现重放宏的操作。 如果您的编辑器支持宏这项功能,请多使用 😃 宏化自动步骤相当于对编辑器的自动化编程,宏录制可…...
JS中面向对象的程序设计
面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但在ECMAScript 中没有类的概念,因此它的对象也与基于类的语言中的对象有所不…...
云耀服务器L实例搭配负载均衡部署Linux 可视化宝塔面板
云耀服务器L实例搭配负载均衡部署Linux 可视化宝塔面板 1. 华为云云耀服务器L实例介绍 华为云云耀服务器L实例是一种高性能、高可靠性的云服务器实例,适用于大规模企业级应用、大数据分析等场景。它基于华为最新一代的硬件虚拟化技术,提供了更高的计算…...
mac pycharm配置autopep8
mac终端安装autopep8 pip install autopep8pycharm配置autopep8 在Pycharm中点击 File–Settings—Tools–External Tools, 点击图中绿色加号图标添加扩展工具,填写相关参数配置。 Name:Autopep8(可以随便取) Tools setting&…...
Vue $nextTick
我们用一个例子来说明$nextTick的作用: 我们用一个变量showIpt来控制input框的显示和隐藏,默认是隐藏。 我们点击一个按钮后显示这个输入框的同时,input还要自动获取焦点。 但是我们点击按钮过后并没有生效。 为什么?this.show…...
linux配置dns
服务器有网,ping IP 地址可以ping的通,但是ping网站域名ping不通,需要配置dns 使用公共dns服务器 1、设置dns服务器地址 vi /etc/resolv.conf 将谷歌的dns服务器地址添加到dns解析配置中 nameserver 8.8.8.8 nameserver 8.8.4.4 保存后&…...
12 原子性|可见性|有序性|JMM内存模型
1 并发三大特性 1.1 原子性 一个或多个操作,要么全部执行,要么全部不执行。Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,但不采取任何原子性保障措施的自增操作不是原子性的,如:i public c…...
pytorch代码复现1(基础知识)
创建矩阵 全零矩阵 In [4]: import torch torch.__version__ xtorch.empty(5,3) xOut[4]: tensor([[0.0000e00, 0.0000e00, 4.6430e-23],[1.4013e-45, 1.2612e-44, 0.0000e00],[3.5733e-43, 0.0000e00, 0.0000e00],[0.0000e00, 0.0000e00, 0.0000e00],[0.0000e00, 0.0000e00, 0…...
PostGreSQL模式schema
问题引入 之前在做数据库设计时,经常会忽略schema模式,直接在数据库下的public模式下建立各类数据表。如果数据表命名不够规范,后期寻找某张表时就会比较麻烦。通过 所幸,PostgreSQL 的模式schema管理,可以对这个问题…...
大厂面试题-什么是JVM
JVM全称是Java虚拟机,在聊什么是JVM之前,我们不妨看⼀下这张图。 从这张图中可以看出JVM所处的位置,同时也能看出它两个作用: 1、运⾏并管理Java源码⽂件所⽣成的Class⽂件, 2、在不同的操作系统上安装不同的JVM&#…...
rest参数
Rest参数是ES6中新增的一个语法特性,也称为剩余参数。其语法形式为三个点(...)加上一个名称,用于表示函数的参数个数不确定,可以将多余的参数收集到一个数组中。Rest参数只能作为最后一个参数出现,且一个函…...
Hadoop3.0大数据处理学习3(MapReduce原理分析、日志归集、序列化机制、Yarn资源调度器)
MapReduce原理分析 什么是MapReduce 前言:如果想知道一堆牌中有多少张红桃,直接的方式是一张张的检查,并数出有多少张红桃。 而MapReduce的方法是,给所有的节点分配这堆牌,让每个节点计算自己手中有几张是红桃&#…...
JS DataTable中导出PDF中文乱码
JS DataTable中导出PDF中文乱码 文章目录 JS DataTable中导出PDF中文乱码一. 问题二. 原因三. vfs_fonts.js四. pdfmake.js五. 解决六.参考资料 一. 问题 二. 原因 DataTable使用pdfmake,pdfmake默认字体为Roboto,不支持中文字体。添加自己的字体&#…...
代码签名证书续费
代码签名证书的有效周期是1-3年,这种情况下证书到期了就要重新申请办理,最开始同样的申请验证步骤还要再走一遍,尤其是Ukey还是要CA机构重新颁发,还是要等待快递配送。OV代码签名证书、EV代码签名证书目前行业内统一采取Ukey存储&…...
机器学习之ROC与AUC
文章目录 定义ROC曲线:AUC(Area Under the ROC Curve): 定义 ROC(Receiver Operating Characteristic)曲线和AUC(Area Under the ROC Curve)是用于评估二分类模型性能的重要工具。 …...
实用篇-Eureka注册中心
一、提供者与消费者 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务) 服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口) 例如前面的案例中,order-service微服务是服…...
基于springboot实现篮球竞赛预约平台管理系统项目【项目源码+论文说明】
基于springboot实现篮球竞赛预约平台管理系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,篮球竞赛预约平台也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&…...
OpenHarmony docker环境搭建所见的问题和解决
【摘要】OpenHarmony docker环境搭建需要一台安装Ubuntu的虚拟机,并且虚拟机中需要有VScode。 整个搭建流程请参考这篇博客:OpenHarmony docker环境搭建-云社区-华为云 (huaweicloud.com) 上篇博主是用Ubuntu的服务器进行环境搭建的,在使用VS…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
