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

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.xdnf.cn/news/902665.html

相关文章:

  • 电脑定时关机工具推荐
  • scss(sass)中 的使用说明
  • 装载机防撞系统:智能守护,筑牢作业现场人员安全防线
  • 智绅科技 —— 智慧养老 + 数字健康,构筑银发时代安全防护网
  • JVM虚拟机:内存结构、垃圾回收、性能优化
  • 用设计模式重新思考(类FSM)验证:从混乱到优雅
  • 无人机定位系统技术设计与难点突破!
  • 项目管理的五个阶段有哪些核心功能?项目管理过程需要注意什么?
  • LlamaFactory × 多模态RAG × Chat-BI:万字长文探寻RAG进化轨迹,打造卓越专业AI助手
  • 20250606-C#知识:泛型与非泛型容器的基本操作
  • gitlab CI/CD本地部署配置
  • maven微服务${revision}依赖打包无法识别
  • 【数据结构】B树
  • linux操作系统笔记1
  • 鸿蒙开发 获取当前页面的路径和名字
  • 深入理解指针(二)
  • 文件上传漏洞深度解析:检测与绕过技术矩阵
  • 深入理解 transforms.Normalize():PyTorch 图像预处理中的关键一步
  • Web 架构之 CDN 加速原理与落地实践
  • Significant Location Change
  • 筛选企业订单和业绩显著增长的标的
  • 联想困局,破于AI?
  • 【Kotlin】注解反射扩展
  • 【大厂机试题解法笔记】区间交集
  • 浏览器工作原理05 [#] 渲染流程(上):HTML、CSS和JavaScript是如何变成页面的
  • ES6——对象扩展之Set对象
  • springMVC-10验证及国际化
  • LangChainGo入门指南:Go语言实现与OpenAI/Qwen模型集成实战
  • React 第五十五节 Router 中 useAsyncError的使用详解
  • Editing Language Model-based Knowledge Graph Embeddings