概述:
git是一个版本管理工具。用于管理对应的项目的版本。git是一个分布式的项目管理工具,我每个本地的代码都是一个本地的仓库,然后最终提交到远程仓库(git是一个多分支的版本管理工具)。svn是一个版本管理工具,它是集中式的项目管理工具(单分支 客户端服务端上传)。
git的下载和安装
测试是否安装成功
找到一个文件夹点击右键 弹窗有一个git gui here (从当前位置打开gui) git bash here(从当前位置打开命令行)当你出现这个俩个内容就已经安装完成。
dos命令测试(找到当前安装路径下的bin目录 进入cmd)
git --version
git入门
dos命令操作(windows的相关命令行 cmd打开)
cd 进入文件夹
mkdir 创建文件夹
ipconfig 查看网络配置
cls 清除所有内容
linux命令操作 (linux的命令行)
cd 进入文件夹
ls 查看文件
ll 查看所有的文件以列表形式
clear 清除所有的内容
shutdown 关机
reboot 重启
mkdir 创建文件夹
tar 解压
git bash here 打开的命令窗口是一个linux命令窗口
创建本地仓库(创建的git目录是一个隐藏文件)
git init #初始化本地仓库
git的分区
对应的git仓库分区,分为三个区。
- 工作区 (你就是你的工作代码)
- 暂存区 (暂存你的代码 通过状态可以查看对应的暂存内容 可以更改)
- 历史区(版本库)( 通过日志可以查看你的提交记录 最终记录存在历史区 历史区不能更改)
分区相关操作
从工作区到暂存区
git add 文件名 #添加对应的文件到暂存区
git add 文件夹名 #添加对应文件夹里的所有文件到暂存区
git add . #添加所有的文件到暂存区
git add * #添加所有的文件到暂存区
git add --all #添加所有的文件到暂存区
查看状态
git status
从暂存区撤回(不会影响工作区)
git reset HEAD -- 文件名
git reset HEAD -- 文件夹
git reset HEAD -- . #撤回所有
git reset HEAD -- * #撤回所有
从暂存区到历史区
在第一次进入提交的时候他需要你配置对应的用户名和邮箱号
git config user.username 名字 --global
git config user.email 邮箱 --global
提交命令
git commit 文件名
git commit 文件夹名字
git commit .
git cmmit *
vi编辑器
vi编辑器三种模式
- 阅读模式 (默认的模式 从插入模式进入阅读模式按esc键)
- 插入模式 (进入插入模式才可以进行编辑 按 i a o都可以进去 通过阅读模式进入)
- 命令行模式 (执行命令 从阅读进入 :wq 保存退出)
提交记录查看
git log
直接设置对应的提交信息进行提交
git commit 文件名 -m 提交信息
从暂存区提交到历史区 暂存区就没有了
从历史区库撤回
git reset --hard 版本号
git reset --hard HEAD #撤回最近提交的
命令 | 是否影响暂存区 | 是否影响工作区 |
---|---|---|
--soft | ✔️ | ❌ |
--mixed(默认) | ❌ | ✔️ |
--hard | ✔️ | ✔️ |
分支
概述
分支其实就是将每个功能进行相关的抽取,让每个功能之前可以不受影响。
示例
某公司开发一个医药管理系统,张三负责一个登录功能,李四负责一个审批功能。俩个功能之前应该是没有关系的,在对应下载代码的时候,张三只需要下载张三的代码,李四只需要下载李四的代码,因为我们现在只有一个分支,那么张三的代码和李四的代码是不是都要上传到这个分支,那么就会出现张三的代码可能覆盖李四的代码(混淆)。为了防止这个操作对应的就可以给张三的功能和李四的功能开辟不同的分支那么现在他们就不会影响了。分支是为了更加方便多人开发协作。
分支命名及相关要求
git 分支分为集成分支、功能分支和修复分支,分别命名为 master、feature 和 fix,均为单数。不可使用 features、future、hotfixes、hotfixs 等错误名称。
- master(主分支,永远是可用的稳定版本,不能直接在该分支上开发)
- develop (开发主分支)
- master_check(未上线前的开发分支,该分支只做只合并操作,不能直接在该分支上开发,前期开发完成后将feature分支合并到此分支)
- online(线上分支,由发版人员确认测试没问题后,将online_check分支合并到此分支)
- online_check(线上开发主分支,所有新功能以这个分支来创建自己的开发分支,该分支只做只合并操作,不能直接在该分支上开发)
- feature-xxx(功能开发分支,在develop上创建分支,以自己开发功能模块命名,功能测试正常后合并到develop分支,开发完成后合并到online_check分支上)
feature/login
- fix-xxx(修改bug分支,在master分支上创建,修复完成后合并到 online_check)
注意事项:
- 一个分支尽量开发一个功能模块,不要多个功能模块在一个分支上开发。
- feature 分支在申请合并之前,最好是先 pull 一下master_check分支下来,看一下有没有冲突,如果有就先解决冲突后再申请合并。
分支相关操作
开辟分支
git branch 分支名
查看分支(*号表示当前所在分支)
git branch
切换分支
git checkout 分支名
删除分支(不能处在当前分支删除当前分支)
git branch -d 分支名
git branch -D #强制删除
合并分支(将指定分支合并到当前分支)
git merge 分支名
衍合分支(将指定分支衍合到当前分支)
git rebase 分支名
衍合和合并的区别在于,合并会产生一个merge commit,衍合不会
gitee
概述:
gitee是一个代码托管平台(国内 码云),他其实也是一个远程仓库(可以将你的代码上传到这个仓库)。类似于gitEE的平台还有gitHub(全球性的代码托管平台)以及类似于gitHub的一个托管平台gitLable(需要自己搭建环境 私服 )
gitEE入门
主页
新建仓库
克隆
提交内容到远程仓库
git add .
git commit . -m 信息
git remote add origin url地址 #这个git文件夹是由gitee平台创建 不需要连
git push origin master
拉取最新内容
git pull origin master #拉取最新的内容 合并分支
请求内容
git fetch origin master #不会合并对应的分支
git冲突
版本的冲突,a和b维护同一份代码(版本0),a先提交了版本1 ,b再提交的话就会有冲突(版本0)b就是不能提交上去,这个时候就要解决这个问题,我们就可以先拉取最新的这个时候b的版本就变成了版本1 然后b再提交这个时候版本就变成了版本2就可以顺利提交,如果a和b写的同一份文件呢,这个时候也会有问题(冲突问题 保留谁的文件 比对代码保留对应的内容处理冲突(人工))
git fetch origin master:temp #请求master的内容进行备份 备份的分支temp
git diff temp #比对
git merge temp #合并
vscode来处理
扩展内容
http的协商缓存和强制缓存
缓存
概述:
下载一个电影到你本地就称为缓存,缓存的概念就是将资源下载你的电脑上,缓存的好处就是提高速度,他可以将我们的页面渲染的性能提高。对应的http为了提高我们的数据请求的速度性能他就内置缓存,为了减少对应的服务器处理提高对应的性能。
http内置缓存有俩种分别为
- 强制缓存
- 协商缓存
强制缓存
-
就是强制性让页面请求的数据通过缓存读取(数据不变的)时效性(响应头)
-
cache-control 缓存控制器
-
返回的状态码一定是200
协商缓存
-
就是服务器和浏览器进行协商看对应的数据要重新响应 (请求一定会发生)
-
etag 这个内容是用于判断当前的文件是否发生变化
-
last-modeified 文件的最后修改时间通过这个时间判断数据是否发生变化了
-
如果数据是没有更改那么给你返回的状态码是304
-
如果数据发送变化那么重新响应数据 返回的状态码是200
http的协商缓存和强制缓存的区别
- 强制缓存的优先级高于协商缓存(cache-control来控制 1.1新增的 1.0是一个expires来控制)
- 强制缓存的数据一定没有发送变化 所以返回的状态码一定是200
- 协商缓存缓存(etag和last-modified来共同控制)是数据可能发送变化 或者是强制缓存过期了 这个时候浏览器一定会发送请求
- 如果数据发送变化 返回状态码为200 没有变化状态码304