Git(版本控制:前端git使用全流程)

news2024/9/22 1:37:20

1.版本控制(简单理解:就是软件对每次操作之后提交的记录)

  • 文件版本

  • 版本控制软件

  • 版本控制的好处

  • 版本控制的分类

  • 本地版本控制系统

  • 集中化版本控制系统

  • 分布式版本控制系统

2. Git基础概念与工作流程 

  •  什么是Git?

开源的分布式版本控制系统,快速高效处理从很小到很大的项目版本管理

  •  Git特性:直接记录快照,而非差异比较

SVN基本差异版本控制,存储的是一组基本文件和每个文件随时间逐步积累的差异

  • 好处:节省磁盘空间
  • 缺点:
    • 耗时、效率低
    • 每次切换版本的时候,都需要在基本的文件基础上,应用每个差异,从而生成目标版本对应的文件

Git快照是在原有文件版本基础上重新生成一份新的文件,类似于备份,为了效率,如果文件没有修改,Git不在重新存储该文件,而是保留一个链接指向之前存储的文件

  • 缺点:占用磁盘空间较大
  • 优点:版本切换时候非常块,因为每个版本都是完整的文件快照,切换版本时候直接回复目标版本的快照即可

  • Git 管理拥有三个区域

    • 工作区

    • 暂存区

    • Git仓库

  •  Git的三种状态:注意存在暂存区

  • 工作区的文件被修改了,但是还没放在暂存区,就是已修改的状态
  • 但是文件已经修改放在暂存区,就属于已暂存状态
  • 如果Git仓库中保存着特定版本的文件,就属于已提交状态
  • Git工作流程

  • 工作中修改文件
  • 将想要下次提交的更改进行暂存
  • 提交更新,找到暂存区的文件,将快照永久性存储Git仓库

3.Git基础(并操作用户初始化操作:声明自己的git版本控制)

  • 安装:

Git (git-scm.com)https://git-scm.com/

安装之后会存在的右键点击效果

  •  Git安装之后首先配置用户信息

    • 定义当前计算机的用户名和email密码(注意只需要声明一次就可以长期使用)
git config --global user.name "名字"
git config --gloabl user.email "email地址"

  •  Git全局配置文件

    • 配置用户信息之后就会存在本地文件夹:.gitconfig

  • 检查配置信息:除了上面的全局配置存在的地方,可以使用命令进行查看

# 查看所有全局配置
git config --list --gloabal
# 查看指定的全局配置
git config user.name
git config user.email

  •  查看帮助信息:可以对配置好的信息进行查看配置(可略)

#想要打开git config命令的帮助手册(网页版本)
git help config
#简单语法
git config -h

 4. Git基础操作

获取Git仓库的两种方式:(先得有仓库才能完善后面操作):本地创建库,从远程克隆库

  • 将尚未进行版本控制的本地目录转换为Git仓库
  • 从其他服务器克隆一个存在的Git仓库

 在现有(已经创建好的总文件夹下:例如一个工程文件)目录下进行初始仓库

  • 打开Git Bush
  • 执行git init :当前工程文件夹转为Git仓库

  • 之后会存在一个git仓库文件夹:这是隐藏文件,需要将隐藏文件夹显示打开

 工作区的四种状态

  • 分为两大类:未被管理和已被管理(需要先被管理追踪才能继续操作)
  • 未被管理:指的是新建的文件没有被git发现
  • 已被管理:新创建的文件已经被git已经追踪/发现
  • 注意:最终要实现的目的就是未修改状态

  •  检查文件的状态操作:git ststus(这个方法是查看所有操作状态)

精简方式查看文件状态

git status -s  (一般使用此方法:与下面方法相同)

git status --short

以下是会出现的结果(后面就是操作的文件):

  • ? ?   :  表示文件未被跟踪

  • M  :   表示文件被修改

  • A  :    表示文件有新增文件

  • D :     表示从git仓库中删除了哪个文件

跟踪文件:git add 文件名.文件后缀名

  •  提交更新 git commit -m “提交信息”

  • 暂存区中有一个文件等待被提交到Git仓库
  • 将追踪文件提交到暂存区之后进行再进行查看

  对已经提交的文件进行修改 

  • 注意修改之后的文件没有防止缓存区会出现红色:modified

  • 修改index.html文件
  • 运行git status
  • 运行git status -s

 

暂存已修改的文件:git add 文件名.文件后缀名

 

工作区中的index.html文件已经被修改,如果要暂存这次修改,再次使用git add命令,这个命令是多功能命令,主要三个功效:

  • 可以使用其开始跟踪新文件

  • 把已经跟踪的文件,并且修改的文件放到暂存区

  • 把有冲突的文件标为已经解决状态

再次提交已经暂存的文件:git commit -m “提交信息”

即可将在那存取中记录index.html快照(原有版本生成的新的文件),提交到Git仓库中进行保存 

撤销对文件的修改  git checkout -- 修改的文件名.后缀名

  • 操作结果:所有修改丢失,并且无法恢复,危险性比较高
  • 本质就是用git仓库中文件覆盖工作区中指定文件

 

向暂存区中一次性添加多个文件:  git add.

  • 开发中经常使用这个命令,将新增和修改过后的文件加入到暂存区

 这里修改了html文件并且新增了js文件和css文件

基础操作总结:

  • 初始化仓库: git init

  • 查看文件状态:  git status -s

  • 一次性将文件放到暂存区:   git add .

  • 将暂存区提交到git仓库命令:  git commit -a -m "提交信息"

 

取消暂存的文件:

  • git reset HEAD      要移除的文件名称 :移除指定文件

  • git reset HEAD .    移除所有文件

 跳过使用暂存区域:git commit - a -m"描述信息"

Git标准的工作流程是:工作区 -> 暂存区 ->Git仓库

简化后的工作流程:工作区--> Git仓库

 从Git仓库中移除文件

  • 从git仓库和工作区同时移除对应文件:    git rm -f index.js

  • 只从git仓库中移除:     git rm --cached index.css

 git忽略文件   .gitnore配置文件

  • #开头的是注释
  • /开头的是防止递归
  • 结尾/的是目录
  • !开头的标识取反
  • 使用glob模式进行文件和文件夹的匹配(指简化了的正则表达式

 glob模式

 

  • 星号*匹配零个或者多个字符
  • [abc] 匹配任何一列在方括号中的字符(此方案匹配一个a或匹配一个b或匹配一个c)
  • 问号?只匹配一个任意字符
  • 在方括号中使用短划线分割两个字符,标识所有在这两个字符范围内都可以匹配(比如[0-9]标识匹配所有的0-9的数字)
  • 两个星号**匹配任意中间的目录(比如a/**/a可匹配a/z、a/b/z或者a/b/c/z)
#忽略 所有.a文件
*.a

#但是跟踪 lib.a,即使前面忽略了.a文件
!lib.a

#只忽略目录下的TOOD文件,但是不忽略subdir/TODO
/TODO

#忽略任何目录下名为build文件
build/

#忽略doc/notes.txt但是不忽略doc/server/arch.txt
doc/*.txt

#忽略doc/ 目录机器所有子目录下的.pdf文件
doc/**/*.pdf

例子: 创建gitnor文件之后通过文本编辑器设置忽略的文件

 

查看提交历史: git log

包含作者、邮箱、时间、提示信息

q可以退出当前查看

 版本切换

  回到第一个版本:使用单独的版本号

 回到之前的版本

 5. 了解Git开源

什么是开源

 

什么是开源协议 :

开源并不意味完全 没有限制,为了限制使用者的使用范围和保护作者的权力,每个开源项目都应该遵守开源许可协议

 五种开源许可协议

  开源托管平台:

  • GitHub:全球最好开源托管平台

  • GitLab:企业用户较多

  • Gitee:码云(国产GitHub)

GitHub访问方式:

  • Https:零配置,之前每次访问都需要输入账户密码(现在需要了) 

     

  • SSH:额外配置(配置之后不用重复输入账号密码)

 基于Https将git本地库上传到远程库(首次)

 

 

修改本地文件再上传 (可以直接使用命令进行上传)

这里已经不是第一次上传

 

 基于SSH key将git本地库上传到远程

1. 生成SSH key 

ssh-keygen -t rsa -b 4096 -C "email"

连续三次回车,可以在c:\user\用户文件夹\.ssh目录中生成id_rsa和id_rsa.pub两个文件

 

 

2. 配置SSH key

  • 打开id_rsa.pub文件并全部复制

  • 登录github:头像->Setting-> SSH and GPG Keys -> New SSH key
  • 将文件中内容粘贴到Key对应文本框
  • title文本框填写一个名称,标识key从何而来

 

3. 检测SSH key是否配置成功 

gitbush中测试: ssh -T git@github.com

输入yes:

 

4.  将本地库上传到GitHub

在当前git仓库目录中将文件上

 

 

 

远程仓库的使用

将远程仓库克隆到本地:git clone 远程仓库地址

 

 

 6. 分支

1. 什么是分支?

相当于平行宇宙

当前平行宇宙一个学git一个学SVN

在某个时间点,两个平行宇宙合并了,结果你即会了Git也学会了SVN

 

2. 分支在实际开发中的作用

在进行多人协作的时候,为了防止互相干扰,提高协同开发,每个开发者都基于分支进行项目开发

 

 3. master(main)主分支

初始化git本地仓库时候,git默认就创建了main主分支

主分支:用来保存和记录整个项目已经完成的功能代码(删除和合并都是在主分支进行操作)

不允许直接在master主分支上修改代码,因为这样的风险太高,容易导致这个项目崩溃

 4. 功能分支

功能分支:专门用来开发新功能的分支(功能实现完成之后会合并到主分支,)

5.  查看分支列表

git branch

  • 分支前面的*标识所处的分支

 

6. 创建新的分支

git branch 新分支名字

 

 

 

 7. 切换分支

git checkout 切换的分支名(注意类似于撤销对文件的修改)

 

 8. 分支的快速创建和切换

git checkout -b 分支名称

 

 

 

9. 合并分支 

 

  • 切换到当前主分支

 git checkout main

  • 运行命令将分支合并到主分支

 git merge 分支名

 

 

可以查看文件的内存占比判断是否已经进行了切换

 

10. 删除分支 

git branch -d 分支名称

 

 

11. 分支冲突合并

两个不同分支对同一个文件进行不同的修改,git无法干净的的合并 

此时需要打开这些包含冲突的文件手动解决冲突

 

 打开vscode当前修改的的文件会存在git操作之后的选择:

  • 选择哪一次更改(直接选择上方到的操作按钮)

 解决完合并冲突之后再次进行上传

 12. 本地分支推送到远程仓库

git push -u origin 远程仓库名 (本地分支名:远程分支名)

  • 如果想要本地分支名字和远程库分支名一样,就只需要一个本地分支名

分支名不同

git push -u origin payment:pay

分支名相同

git push -u origin payment

第一次推送分支需要带-u参数,此后可以使用git.push推送代码到远程分支

 

13. 查看远程仓库中所有分支列表

 git remot show 远程仓库名

 

14. 远程分支操作

14-1 远程跟踪分支 

目的:从远程库将远程分支下载到本地仓库中

#从远程仓库中把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同
git checkout 远程分支的名称

#实例:pay就是远程库名字
git checkout pay


#从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称

#实例
git checkout -b payment origin/pay

 

 14-2 拉取远程分支最新代码

git pull

14-3 删除远程仓库分支

 git push origin --delete 远程分支名称

  •  远程删除没有本地删除:本地删除方式

 

  • 强制删除

 

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

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

相关文章

单片机编程中的裸机编程和多任务系统FreeRTOS系统详解,以及怎么学习FreeRTOS,看哪家的教程?(合集)

单片机编程中的裸机系统和多任务系统 学习了那么久的stm32还停留在裸机??? 单片机编程中的裸机系统和多任务系统.1 裸机系统1.1轮询系统1.2 前后台系统 2 多任务操作系统3 为什么要学习多任务操作系统??4 怎么学习Free…

诊断CAPL自动化(6) —— 诊断自动化测试,实战演示

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 下图是UDS协议测试的部分测试用例,该表格在文章末尾网盘自己获取经过前面几…

Cesium实践(4)——空间数据加载

文章目录 前言几何形体点线面体 标签文字图标 几何文件GeoJsonKMLCZML 三维模型总结 前言 本文介绍Cesium如何加载空间数据,空间数据即明确定义在三维空间中的数据,空间数据包括以下几类:1、几何形体(点、线、面、体)…

“支付+SaaS”赋能传统产业数字化转型

易观:传统支付业务利润空间在政策监管和市场竞争下不断被压缩,多家上市支付机构逐步将业务经营重点转移切入到企业交易环节,为企业提供包括SaaS服务、行业解决方案、营销服务及金融科技服务等在内的企业服务收入成为新的增长点。 伴随着“十四…

OSCP-AuthBy(Server 2008提权)

目录 扫描 FTP WEB 提权 扫描 nmap -sV -sC -p- 192.168.73.46 FTP 检查端口21上的匿名登录 导航到accounts目录,可以观察ftp服务上的帐户 Offsec, anonymous, admin

Java8函数式编程(Lambda表达式,Stream流,Optional)

一.函数式编程思想 面向对象思想主要是关注对象能完成什么事情,函数式编程思想就像函数式,主要是针对数据操作;代码简洁容易理解,方便于并发编程,不需要过分关注线程安全问题 二.lambda表达式 1.概念 lambda表达式…

提升金融写作效率:金融校对软件的优势与应用

金融行业的写作任务繁重且要求高度专业,涉及财务报告、研究报告、合同、政策文件等各类文档。金融校对软件应运而生,为金融专业人士提供有效的支持,帮助他们提高写作效率和质量。本文将探讨金融校对软件的优势与应用。 一、金融校对软件的优势…

【NFS共享存储服务】

目录 一、NFS (Network File System)网络文件系统1.1、NFS工作原理1.2、举例1.2.1、共享文件总结 一、NFS (Network File System)网络文件系统 依赖于RPC (远端过程调用) 需安装nfs-utils、rpcbind软件包 系统服务: nfs、rpcbind 共享配置文件: /etc/ex…

跳表的实现

目录 简介跳表的实现 简介 skiplist本质也是一种查找结构,和搜索树、哈希表一样可以作为key或者key/value模型的查找结构,从命名可以看出它也是一个链表结构,链表的查找效率是O(n),作为在链表基础上优化的一种查找结构,跳表的查找…

app拉新充场代理

我认为您可能是想了解APP充值拉新软件的功能吧。通常,APP充值拉新软件会具有以下功能: 充值服务:提供多种支付方式,让用户方便快捷地进行充值操作。 活动推广:通过不同的方式,如折扣、优惠码等&…

Tomcat的部署和优化

Tomcat的组件构成 (1)Web 容器:完成 Web 服务器的功能。 (2)Servlet 容器:名字为 catalina,用于处理 Servlet 代码。 (3)JSP 容器:用于将 JSP 动态网页翻译成…

centos系统安装mysql8.0

centos系统安装mysql8.0 环境说明开始1、查看centos7中是否有MariaDB,MariaDB与MySQL关系请自行查阅2、如果有MariaDB,需要将 步骤1 中查询到的mairadb全部卸载,否则MySQL安装会出现问题3、查看本机是否已经安装过MySQL4、如果安装过MySQL&am…

9.java程序员必知必会类库之加密库

前言 密码学在计算机领域源远流长,应用广泛。当前每时每刻,每一个连接到互联网的终端,手机,电脑,iPad都会和互联网有无数次的数据交互,如果这些数据都是明文传输那将是难以想象的。为了保护用户隐私&#…

算法--前缀和技巧 (蓝桥杯123-灵能传输)

文章目录 什么是前缀和用途什么时候用例题[蓝桥杯 2021 国 ABC] 123题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路代码 灵能传输(蓝桥杯96%,洛谷ac)[蓝桥杯 2019 省 B] 灵能传输题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1…

知识图谱实战开篇-讲述知识图谱是什么,要学哪些知识,一文讲通

大家好,我是微学AI,今天给大家带来知识图谱重要讲述,讲明白什么是知识图谱,知识图谱可以做什么,需要学哪些知识,与自然语言处理的关系。很多人认为知识图谱是关系图谱,可能涉及人工智能的东西不…

【LeetCode】650. 只有两个键的键盘

650. 只有两个键的键盘(中等) 思路 不同于以往通过加减实现的动态规划,这里需要乘除法计算位置。因为粘贴操作是倍数增加,使一个一维数组 dp,其中位置 i 表示延展到长度 i 的最少操作次数。对于每个位置 j &#xff0c…

C++学习 Day6

目录 1. 类对象模型 1.1 如何计算类对象的大小 1.2 类对象的存储方式 1.3 结构体内存对齐规则 2. this指针 2.1 this指针的引出 2.2 this指针的特性 3. 类的6个默认成员函数 4.构造函数 4.1 概念 4.2 特性 1. 类对象模型 1.1 如何计算类对象的大小 class A { publi…

【Java】『蓝桥杯』10道编程题及答案(一)

系列文章 【Java】『蓝桥杯』10道编程题及答案(一) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130223115 【Java】『蓝桥杯』10道编程题及答案(二) 本文链接:https://blog.csdn.net/y…

【Hello Network】协议

作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:简单介绍下协议并且设计一个简单的网络服务器 协议 协议的概念结构化数据传输序列化和反序列化网络版计算机服务端代码协议定制客户端代码服务线程执…

[Netty] HashWheelTimer时间轮 (十六)

文章目录 1.常见定时任务实现2.时间轮算法3.HashedWheelTimer源码分析3.1 内部结构分析3.2 构造方法3.3 添加任务3.4 工作线程Worker3.5 停止时间轮 4.HashWheelTimer总结 1.常见定时任务实现 定时器的使用场景包括:成月统计报表、财务对账、会员积分结算、邮件推送…