当前位置: 首页 > news >正文

Git基础 | 原理、配置、用法、分支 合并

目录

1 git初步了解

1.1 git的安装

1.2 git原理模型

1.3 git基础配置

1.4 git基础用法

1 将文件加入暂存区

2 查看当前的git仓库状态

3 删除文件

4 commit 将暂存区文件加入本地git版本仓库

5 查看提交历史 更改

2 分支

2.1 创建分支

2.2 查看分支

2.3 切换分支

2.4 内容比较

3 合并


1 git初步了解

Git是分布式管理系统

什么是分布式?就是不需要联网,在自己的机器上就可以使用

什么是版本控制?记录、管理、回溯文件的修改历史

这里要解决一个我初学的时候一个非常重要的问题,我为什么要进行版本控制?

其实有这个问题,说明我当时还是缺乏比较大型的工程项目实践,代码量什么的都比较少

平时敲代码就一个文件,或几个文件相互链接,错了就修改一下嘛,也用不着怎么版本管理

但是当实际开发中的情况是:

1 工程文件往往非常复杂,逻辑结构很多,如果我修改错了很难回到原始的版本?

2 工程文件往往多人进行修改,如何保证整体的正确性?

那么为了解决这样的问题,Git版本管理就出现了!!成为我们的得力助手

1.1 git的安装

别人总结的现成的比较好

【精选】Git 详细安装教程(详解 Git 安装过程的每一个步骤)git安装mukes的博客-CSDN博客

1.2 git原理模型

local本地

主要有两部分

第一部分:我们可见的工作目录,

第二部分:git仓库(,git结尾一般不可见),git仓库又由两部分组成一个是暂存区stage,另一个提交历史(版本)commit history

remote 远端

也有一个git仓库

我们在本地做了修改之后,会将修改自动add添加到暂存区stage,然后我们可以进行commit 提交到commit history,最后进行一步push就可以将本地的修改同步到远端。

如果我们想获取远端,则进行pull,远端的git仓库会对本地的工作目录和git仓库同步更新

1.3 git基础配置

1 创建一个本地的git版本库

  • 通过git init命令

    • git init:让当前文件夹变成git仓库

    • git init folder:创建一个新的文件(叫folder)并初始化为git仓库

git init test

2 git的账号配置

为什么要账号配置,记录谁来完成,方便多人合作

  • 通过git config 命令

    • git config --global user.name "name"

    • git config --global user.email "email"

上述是全局配置,也就是整个本地电脑使用的

如果不想全局配置,而是针对某一版本库(如上面新建的test)专门设置,则不加--global

1.4 git基础用法

1 将文件加入暂存区

git add file/folder

这个只会添加修改过的文件

git add file.txt

git add .

表示添加当前目录下所有修改过的到暂存区

2 查看当前的git仓库状态

git status

一般会显示两个

一个是是否有commit history需要push

另一个是是否有暂存区的需要commit到commit history

如图可见有第二个

有些时候会有状态显示

  • 未跟踪Untracked

不在版本库的新建的文件

  • 已追踪Tracked

在版本库里的文件

  • 被忽略 Ignored

在本地里有,但是不会加入到版本库里

这个需要通过.gitignore这文件来实现

文件里面写匹配文件的规则,符合规则的不会加入

git Check-ignore -v file:查看某个文件是否被忽略

github/gitignore: A collection of useful .gitignore templates

3 删除文件

只在本地删除版本库中不存在的文件:rm

同时删除本地和版本库中的文件 git rm

将一个已暂存的新文件取消暂存 git rm --cached

4 commit 将暂存区文件加入本地git版本仓库

git commit:默认编辑器编辑提交信息

git commit -m "init commit"

5 查看提交历史 更改

git log

  • --oneline 每一个提交一行

  • --graph:显示分支结构

  • --stat:显示文件删改信息

  • -p:显示详细的修改内容

每个提交都有一个唯一的sha-1标识符id(40位十六进制数)

git show id(标识符):显示提交的详细信息(id在不重复的情况下只写前几位就可以了)

检出之前并回到某一个版本:git checkout id

关于commit message的规范

意义是什么:记录更改的原因、内容 方便定位/回溯

采用Angular规范

<type>([scope]):<summary>
​
[body]
​
[footer]
  • type:更改类型(fix/feat/docs/refactorperf/test/ci)重大的更改可以写BREAKING CHANGE或DEPRCATED

    • fix 修改

    • feat

    • docs 添加文本

    • refactor

    • perf 效率提升

    • test

  • scope:影响范围

  • body:详细描述可选

  • footer:脚注可选

docs(file.txt):增加了一行文本

所以版本控制的“版本”呢?

  • 创建标签:

    • 轻量标签 git tag tag id(id可选,默认位HEAD)

    • 附注标签 git tag -a tag -m "message" id

  • 查看标签:

    • git tag 查看标签

    show tag

版本号命名规范

主版本号 次版本号 修订号[-预发布版本号]

修订号:兼容修改,修正不正确的行为

次版本号:添加功能,但是保持兼容

主版本号:不兼容API修改

且为0的时候表示还在开发阶段,不保证稳定性

预发布版本号

HEAD代表当前工作区在版本号的位置

detached head:

2 分支

git branch name:基于当前Head

2.1 创建分支

git branch name:基于当前HEAD

git branch name id:基于ID提交

2.2 查看分支

git branch(带 -a表示显示远程分支)

git show-branch更详细

2.3 切换分支

git checkout name

git check out -b name:创建并切换

2.4 内容比较

git diff branch1 branch2 :比较两个分支

git diff branch 比较工作区和分支

git diff:比较工作区和暂存区

如何更方便定位提交

通过ref使用~或^定位父提交

~表示第一个父提交,~2表示第一个父提交的第一个父提交

^表示第一个父提交,^2表示第二个父提交

一个提交可能会有多个父提交(merge)

3 合并

将多个分支合并到当前分支

commit graph

新建一个分支

当前分支只比被合并分支多提交already up-to-data

被合并分支只比当前分支多提交fast-forward 将Head指向被合并分支

都有新的提交:merge commit

实际上merge操作一般都在github上通过PR完成

rebase变基

相关文章:

Git基础 | 原理、配置、用法、分支 合并

目录 1 git初步了解 1.1 git的安装 1.2 git原理模型 1.3 git基础配置 1.4 git基础用法 1 将文件加入暂存区 2 查看当前的git仓库状态 3 删除文件 4 commit 将暂存区文件加入本地git版本仓库 5 查看提交历史 更改 2 分支 2.1 创建分支 2.2 查看分支 2.3 切换分支 …...

刀具磨损状态识别(Python代码,MSCNN_LSTM_Attention模型,初期磨损、正常磨损和急剧磨损分类,解压缩直接运行)

1.运行效果&#xff1a;刀具磨损状态识别&#xff08;Python代码&#xff0c;MSCNN_LSTM_Attention模型&#xff0c;初期磨损、正常磨损和急剧磨损&#xff09;_哔哩哔哩_bilibili 环境库&#xff1a; NumPy 版本: 1.19.4 Pandas 版本: 0.23.4 Matplotlib 版本: 2.2.3 Keras …...

web:[网鼎杯 2020 青龙组]AreUSerialz

题目 点进题目发现 需要进行代码审计 function __destruct() {if($this->op "2")$this->op "1";$this->content "";$this->process();}这里有__destruct()函数&#xff0c;在对象销毁时自动调用&#xff0c;根据$op属性的值进行…...

【Python机器学习】零基础掌握PolynomialCountSketch内核近似特征

面临挑战的机器学习模型:如何提高准确性? 在实际应用中,机器学习模型常常面临一个问题:如何在保持模型复杂性不变的情况下,提高模型的准确性?特别是在处理高维数据集时,这个问题尤为突出。这里,有一种名为“核方法”的技术可以解决这个问题,但通常会增加计算成本。那…...

【Linux】深入理解系统文件操作(1w字超详解)

1.系统下的文件操作&#xff1a; ❓是不是只有C\C有文件操作呢&#xff1f;&#x1f4a1;Python、Java、PHP、go也有&#xff0c;他们的文件操作的方法是不一样的啊 1.1对于文件操作的思考&#xff1a; 我们之前就说过了&#xff1a;文件内容属性 针对文件的操作就变成了对…...

echarts柱状图和折线图双图表配置项

{tooltip: {trigger: axis,axisPointer: { // 坐标轴指示器&#xff0c;坐标轴触发有效type: cross // 默认为直线&#xff0c;可选为&#xff1a;line | shadow}},legend: {data: [新增客户数, 新增客户两年内回款情况],type: scroll,selectedMode: false // 控制是否可以通过…...

【LVS实战】02 搭建一个LVS-NAT实验

一、网络结构 用虚拟机搭建如下的几台机器&#xff0c;并配置如下的ip 关于虚拟机网卡和网络的配置&#xff0c;可以参考 iptables章节&#xff0c;05节&#xff1a;网络转发实验 主机A模拟外网的机器 B为负载均衡的机器 C和D为 RealServer 二、C和D主机的网关设置 C和D机…...

2023.10.26-SQL测试题

employee表&#xff1a; department表&#xff1a; job表&#xff1a; location表&#xff1a; 题目及答案&#xff1a; -- (1).查询工资大于一万的员工的姓名(first_name与last_name用“.”进行连接)和工资-- select CONCAT(first_name,.,last_name) as 姓名 ,salary -…...

JVM虚拟机:从结构到指令让你对栈有足够的认识

本文重点 在前面的课程中,我们学习了运行时数据区的大概情况,从本文开始,我们将对一些组件进行详细的介绍,本文我们将学习栈。栈内存主管java的运行,是在线程创建时创建的,它是线程私有的,它的生命周期是跟随线程的生命期,也就是说线程结束栈内存就释放了,对于栈来说…...

【启发式算法】白鲸优化算法【附python实现代码】

写在前面&#xff1a; 首先感谢兄弟们的订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 路虽远&#xff0c;行则将至&#…...

【Python机器学习】零基础掌握RBFSampler内核近似特征

有没有想过如何在复杂的数据集上快速进行分类? 在现实生活中,大量的数据集通常非常复杂,并不总是线性可分的。例如,在医疗领域,诊断患者是否患有某种疾病通常涉及多个变量和复杂的模式。简单的线性模型可能无法有效地处理这种复杂性。 一种可能的解决方案是使用更复杂的…...

高级工技能等级认定---网络设备安全

目录 一、DHCP 安全配置 二、SSH配置 三、标准ACL的配置 四、配置交换机端口安全 五、三层交换和ACL的配置 一、DHCP 安全配置 配置要求&#xff1a; 1.给交换机配置enable密码. 2.在交换机上创建VLAN 100&#xff0c;将F0/1-3口改为Access口&#xff0c;并加入到VLAN …...

spting Boot常见知识点

31.介绍一下 SpringBoot&#xff0c;有哪些优点&#xff1f; 1、Spring Boot 基于 Spring 开发&#xff0c;Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能&#xff0c;只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。它并不是用来替代 Spring 的解…...

大模型在数据分析场景下的能力评测

“你们能对接国产大模型吗&#xff1f;” “开源的 LLaMA 能用吗&#xff0c;中文支持怎么样&#xff1f;” “私有化部署和在线服务哪个更合适&#xff1f;” 自 7 月 14 日发布 AI 数智助理 Kyligence Copilot 后&#xff0c;我们收到了很多类似上面的咨询&#xff0c;尤其…...

[笔记] 关于y1变量取名冲突的问题

参考博客 遇到的问题和这位老哥的一模一样。 结论是&#xff1a;当我们用math头文件的时候&#xff0c;不能在全局定义 y0 和 y1&#xff0c;j0、j1、jn、yn。...

js笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)

JavaScript 笔记 函数参数 默认参数 在 JavaScript 中&#xff0c;我们可以为函数的参数设置默认值。如果调用函数时没有传递参数&#xff0c;那么参数将使用默认值。 function greet(name World) {console.log(Hello, ${name}!); }greet(); // 输出&#xff1a;Hello, Wo…...

Istio实战(八)- Istio 动态准入 Webhook 配置

准入 Webhook 是 HTTP 方式的回调&#xff0c;接收准入请求并对其进行相关操作。 可定义两种类型的准入 Webhook&#xff0c;Validating 准入 Webhook 和 Mutating 准入 Webhook。使用 Validating Webhook&#xff0c;可以通过自定义的准入策略来拒绝请求&#xff1b; 使用 Mut…...

Vue的安装

----------------------------------------------------前置---------------------------------------------------- 1.node.js的下载安装、缓存路径的设置 ①安装 ②设置npm prefix, cache 2.NODE_PATH、PATH ①系统变量中加 ②PATH中加 3.配置镜像源 -----------------------…...

macOS M1安装wxPython报错

macOS12.6.6 M1安装wxPython失败&#xff1a; 报错如下&#xff1a; imagtiff.cpp:37:14: fatal error: tiff.h file not found解决办法&#xff1a; 下载源文件重新编译&#xff08;很快&#xff0c;5分钟全部搞定&#xff09;&#xff0c;分三步走&#xff1a; 第一步&…...

【数据结构】交换排序

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 冒泡、快速排序 1. 冒泡排序2. 快速…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...