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^