Git版本控制工具详解

如何区分开发环境和生产环境呢

答案就是写不同的配置文件,开发的设置成开发需要的,生产的设置成生产需要的,共同放到config这个配置文件夹下面,开发和生成的时候分别加载不同的配置文件

方式二就是使用相同的一个入口配置文件,通过设置参数来区分:

入口文件的解析

 我们之前编写入口文件的规则是:./src/index.js,如果我们的配置文件所在的位置变成了config目录,是否应该变成../src/index.js呢?

如果这样写会发现是报错的,依然需要写成./src/index.js

因为入口文件是和另一个属性有关的context

context的作用是用于解析入口和加载器(默认是当前路径,推荐在配置中传入一个值)

邂逅版本控制工具

使用版本控制可以解决很多问题:

 在没有版本控制的时候人们通常使用文件备份的方式进行管理,在通过diff命令对比两个文件的差异(小原始人)

此后经历的版本控制工具的沿革就是CVS -> SVN -> Git

集中式和分布式的区别

CVS和SVN都是集中式版本控制系统

主要特点是单一的集中管理的服务器,保存所有的文件修订的版本

协同开发人员通过客户端连接到这台服务器,取出最新的文件或者提交更新

 这种做法的好处是每个人都可以在一定程度上看到项目中的其他人在做什么

但是集中式版本控制也有 一个核心的问题:中央服务器不能出现故障

如果宕机一小时,那么在这一小时内,谁都无法提交更新,就无法协同工作

如果中心数据库所在的磁盘发生损坏,又没有做备份,那就完蛋了(所有数据都无了)

那么来看看分布式版本控制吧

git是分布式版本控制系统

客户端并不只是提取最新版本的文件快照,而是把代码仓库完整的镜像下来,包括完整的历史记录

这样一来任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复

每一次的克隆操作都是一次对代码仓库的完整备份

git的环境安装搭建

git安装后也会给我们安装三个工具:Bash、CMD、GUI

Bash是Unix shell的一种,Linux和mac os都把他作为默认的shell

git bash是一个shell,是Windows下的命令行工具,可以执行Linux命令

git bash 是基于CMD的,在CMD的基础上增添一些新的命令与功能

在使用的时候用Bash更方便

git CMD

CMD是Windows操作系统上的命令行解释程序

当你在Windows上安装git并且习惯使用命令行时,就可以使用cmd来运行git命令

git GUI

针对那些不喜欢黑屏编码的人

它提供了图形化界面运行git命令

安装完后可以在VScode的终端选择git bash

选择默认配置文件选择git_bash就可以了

终端长这样

然后就还是那几个老生常谈的命令了

git init
git clone

 如果是新项目要创建git仓库的话就git init

如果是老项目克隆别人的仓库就是git clone

git add .

把改动提交到暂存区

git commit -m "提交信息"

使用git提交 

git log

这是打印提交信息

 

 文件状态的划分

现在我们的电脑上已有一个git仓库,在实际开发时需要将某些文件交由这个git仓库来管理

并且我们之后会修改文件的内容,当达成了某一个目标的时候,想要记录下来这次的操作,就会把它提交到仓库中

我们需要对文件来划分不同的状态已确定这个文件是否已经归于git仓库里

未跟踪:默认情况下git仓库下的文件没有添加到git仓库管理中,我们需要通过add命令来操作

已跟踪:添加到git仓库管理的文件处于已跟踪状态,git可以对其进行各种跟踪管理

而已跟踪的文件也可以进行细分的状态划分

staged:暂缓区中的文件状态

Unmodified:commit命令可以将staged中的文件提交到git仓库

Modified:修改了某个文件后会处于Modified状态 

在工作时,可以选择性的将这些修改过的文件放入暂存区

然后提交所有的修改,如此反复

检测文件的状态 - git status

git status可以检查文件的状态

Untracked files是未跟踪的文件

未跟踪的文件意味着Git在之前的提交中没有这些文件

Git不会自动将其纳入跟踪范围(除非告诉它需要跟踪)

还可以查看更简洁的状态信息:

git status -s
git status --short

git忽略文件

一般来说总会有些文件无需纳入git的管理,也不希望他们出现在未跟踪文件列表

通常都是自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等

可以创建一个名为.gitignore的文件

在实际的开发中这个文件通常不需要手动的创建,在必须的时候添加自己的忽略内容

自动创建的忽略文件包括一些不需要提交的文件、文件夹

包括本地环境变量文件和日志文件和编辑器自动生成的文件

文件更新提交 - git commit

每一次准备提交之前可以先用git status看一下,所需要的文件是不是已经暂存起来了

再运行提交命令 git commit

可以在commit命令后添加 -m 选项,将提交信息与命令放在同一行

Git的校验和

Git中所有的数据在存储前都计算校验和,然后以校验和来引用

Git用以计算校验和的机制叫做SHA-1散列(hash,哈希)

这是一个由40个十六进制字符(0-9和a-f)组成的字符串,基于git中文件的内容或者目录结构计算出来

查看提交的历史 - git log

git log会按时间先后顺序列出所有的提交,最近的更新排在最上面

这个命令会列出每一个提交的SHA-1校验和、作者的名字和电子邮件地址、提交时间和提交说明

版本回退 - git reset

如果想要进行版本回退,我们需要先知道目前处于哪一个版本,Git通过HEAD指针记录当前的版本

HEAD是当前分支引用的指针,它总是指向该分支上的最后一次提交

理解HEAD的最简方式,就是将它看做该分支上的最后一次提交的快照

我们可以通过HEAD来改变git的目前版本指向

HEAD^是上一个版本,HEAD^^是上上个版本

如果上1000个版本,可以使用HEAD~1000

可以指定某一个commit id

命令示例:

git reset --hard HEAD^

 

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

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

相关文章

反向传播的核心是什么:计算损失函数对可训练参数的梯度=== 损失函数能通过计算图连接到可训练参数

反向传播的核心是什么:计算损失函数对可训练参数的梯度 损失函数能通过计算图连接到可训练参数 在深度学习中,反向传播的核心是计算损失函数对可训练参数的梯度,从而更新这些参数。对于LLM(大型语言模型)而言,是否需要“LLM输出的参数”才能进行反向传播 一、反向传播…

KINGCMS被入侵

现象会强制跳转到 一个异常网站,请掉截图代码. 代码中包含经过混淆处理的JavaScript,它使用了一种技术来隐藏其真实功能。代码中使用了eval函数来执行动态生成的代码,这是一种常见的技术,恶意脚本经常使用它来隐藏其真实目的。 这段脚本会检…

深入探索串的高级操作:从算法到 LeetCode 实战

串是编程中最常用的数据结构之一,从简单的文本处理到复杂的文本匹配算法,串的应用无处不在。在掌握了串的基本概念、存储结构以及KMP算法之后,现在让我们深入探索串的更多高级操作,例如求子串、串的替换等,并通过LeetC…

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …

OneNet + openssl + MTLL

1.OneNet 使用的教程 1.在网络上搜索onenet,注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT,其他的内容自己填写 6.这里产品以及开发完成,接下来就是添加设…

【Fiddler工具判断前后端Bug】

Fiddler工具判断前后端Bug的方法 使用Fiddler抓包工具可以高效定位问题是出在前端还是后端,主要通过分析请求和响应的内容、状态码、数据格式等关键信息。 分析请求是否成功发送 检查请求是否从客户端正确发出,观察Fiddler抓取的请求列表。若请求未出…

【论文阅读笔记】《A survey on deep learning approaches for text-to-SQL》

文章目录 一、论文基本信息1. 文章标题2. 所属刊物/会议3. 发表年份4. 作者列表5. 发表单位 二、摘要三、解决问题四、创新点五、自己的见解和感想六、研究背景七、研究方法(模型、实验数据、评估指标)八、总结(做了什么、得到了什么、有什么…

【强连通分量 缩点 最长路 拓扑排序】P2656 采蘑菇|普及+

本文涉及知识点 C图论 强连通分量 缩点 最长路 拓扑排序 P2656 采蘑菇 题目描述 小胖和 ZYR 要去 ESQMS 森林采蘑菇。 ESQMS 森林间有 N N N 个小树丛, M M M 条小径,每条小径都是单向的,连接两个小树丛,上面都有一定数量的…

Dubbo Logback 远程调用携带traceid

背景 A项目有调用B项目的服务&#xff0c;A项目使用 logback 且有 MDC 方式做 traceid&#xff0c;调用B项目的时候&#xff0c;traceid 没传递过期&#xff0c;导致有时候不好排查问题和链路追踪 准备工作 因为使用的是 alibaba 的 dubbo 所以需要加入单独的包 <depend…

nodejs:用 nodemailer 发送一封带有附件的邮件

我们将使用 nodemailer 库来发送带有附件的邮件。 首先&#xff0c;确保已经安装了nodemailer。如果没有安装&#xff0c;可以通过 npm install nodemailer 来安装。 cnpm install nodemailer --save dependencies: – nodemailer ^7.0.3 步骤&#xff1a; 引入nodemailer模…

Scade 语言概念 - 方程(equation)

在 Scade 6 程序中自定义算子(Operator)的定义、或数据流定义(data_def)的内容中&#xff0c;包含一种基本的语言结构&#xff1a;方程(equation)(注1)。在本篇中&#xff0c;将叙述 Scade 语言方程的文法形式&#xff0c;以及作用。 注1: 对 Scade 中的 equation, 或 equation…

STM32开发,创建线程栈空间大小判断

1. 使用RTOS提供的API函数&#xff08;以FreeRTOS为例&#xff09; 函数原型&#xff1a;UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask)功能&#xff1a;获取指定任务堆栈中剩余的最小空间&#xff08;以字为单位&#xff0c;非字节&#xff09;。使用步骤&am…

thinkphp8.1 调用巨量广告API接口,刷新token

1、在mysql中建立表sys_token; CREATE TABLE sys_token (id int UNSIGNED NOT NULL,access_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,expires_in datetime NOT NULL,refresh_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,refresh_token_expires_in …

【leetcode】递归,回溯思想 + 巧妙解法-解决“N皇后”,以及“解数独”题目

&#x1f4da;️前言 &#x1f31f; 本期内容亮点&#xff1a;我们将深入解析力扣&#xff08;LeetCode&#xff09;上的几道经典算法题&#xff0c;涵盖不同难度和题型&#xff0c;帮助大家掌握解题思路和代码实现技巧。无论是准备面试还是提升算法能力&#xff0c;这些题解都…

【iOS安全】iPhone X iOS 16.7.11 (20H360) WinRa1n 越狱教程

前言 越狱iPhone之后&#xff0c;一定记得安装一下用于屏蔽更新的描述文件&#xff08;可使用爱思助手&#xff09; 因为即便关闭了自动更新&#xff0c;iPhone仍会在某些时候自动更新系统&#xff0c;导致越狱失效&#xff1b;更为严重的是&#xff0c;更新后的iOS版本可能是…

​​高频通信与航天电子的材料革命:猎板PCB高端压合基材技术解析​​

—聚酰亚胺/陶瓷基板在5G与航天场景的产业化应用​​ ​​一、极端环境材料体系&#xff1a;突破温域与频率极限​​ ​​聚酰亚胺基板&#xff08;PI&#xff09;的航天级稳定性​​ 猎板在卫星通信PCB中采用真空层压工艺处理聚酰亚胺基材&#xff08;Dk≈10.2&#xff09;&a…

pikachu靶场通关笔记13 XSS关卡09-XSS之href输出

目录 一、href 1、常见取值类型 2、使用示例 3、安全风险 二、源码分析 1、进入靶场 2、代码审计 3、渗透思路 三、渗透实战 1、注入payload1 2、注入payload2 3、注入payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关&#xff09;渗透集合&#xff…

day26-计算机网络-4

1. tcp的11种状态 ss -ant -a 表示看所有状态 -n 表示不将ip解析为主机名 -t 表示tcp 1.1. closed状态&#xff08;客户端、服务端&#xff09; 客户端发起建立连接前的状态服务端启动服务前的状态 1.2. listen状态&#xff08;服务端&#xff09; 服务端软件运行的时候状…

基于autodl部署Cross-Modal-Re-ID-baseline

https://arxiv.org/abs/2001.04193 https://github.com/mangye16/Cross-Modal-Re-ID-baseline/tree/master?tabreadme-ov-file# 需要SYSU-MM01.zip pip install numpy pandas scipy scikit-learn pillow tqdm把SYSU-MM01放到…/Datasets/SYSU-MM01/ori_data下 先运行pytho…

线程安全集合

前置阅读&#xff1a; 数据结构等算法概念 树堆排序 锁相关概念&#xff1a; 锁概念锁实现 队列 Queue 与 Deque 的区别 Queue 是单端队列&#xff0c;只能从一端插入元素&#xff0c;另一端删除元素&#xff0c;实现上一般遵循 先进先出&#xff08;FIFO&#xff09; 规则…