首页 > 其他分享 >day29 git讲解

day29 git讲解

时间:2022-11-10 14:22:34浏览次数:65  
标签:缓存 day29 -- 暂存区 git 提交 讲解 分支

概述:

git是一个版本管理工具。用于管理对应的项目的版本。git是一个分布式的项目管理工具,我每个本地的代码都是一个本地的仓库,然后最终提交到远程仓库(git是一个多分支的版本管理工具)。svn是一个版本管理工具,它是集中式的项目管理工具(单分支 客户端服务端上传)。

git的下载和安装

git官网

下载地址

测试是否安装成功

找到一个文件夹点击右键 弹窗有一个git gui here (从当前位置打开gui) git bash here(从当前位置打开命令行)当你出现这个俩个内容就已经安装完成。

image-20221109103238246

dos命令测试(找到当前安装路径下的bin目录 进入cmd)

git --version

image-20221109103510526

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

image-20221109110852068

从暂存区撤回(不会影响工作区)
git reset HEAD -- 文件名
git reset HEAD -- 文件夹
git reset HEAD -- . #撤回所有
git reset HEAD -- * #撤回所有

image-20221109113812715

从暂存区到历史区
在第一次进入提交的时候他需要你配置对应的用户名和邮箱号
git config user.username 名字 --global
git config user.email 邮箱 --global
提交命令
git commit 文件名
git commit 文件夹名字
git commit .
git cmmit *
vi编辑器

image-20221109114033177

vi编辑器三种模式
  • 阅读模式 (默认的模式 从插入模式进入阅读模式按esc键)
  • 插入模式 (进入插入模式才可以进行编辑 按 i a o都可以进去 通过阅读模式进入)
  • 命令行模式 (执行命令 从阅读进入 :wq 保存退出)

image-20221109114621940

提交记录查看
git log

image-20221109114835058

直接设置对应的提交信息进行提交
git commit 文件名 -m 提交信息

image-20221109115413112

从暂存区提交到历史区 暂存区就没有了

从历史区库撤回
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 

image-20221109151405672

切换分支
git checkout 分支名

image-20221109151311025

删除分支(不能处在当前分支删除当前分支)
git branch -d 分支名
git branch -D #强制删除

image-20221109154417956

合并分支(将指定分支合并到当前分支)
git merge 分支名

image-20221109145401226

衍合分支(将指定分支衍合到当前分支)
git rebase 分支名

image-20221109151030883

衍合和合并的区别在于,合并会产生一个merge commit,衍合不会

gitee

概述:

gitee是一个代码托管平台(国内 码云),他其实也是一个远程仓库(可以将你的代码上传到这个仓库)。类似于gitEE的平台还有gitHub(全球性的代码托管平台)以及类似于gitHub的一个托管平台gitLable(需要自己搭建环境 私服 )

gitEE入门

账号注册

image-20221109155412748

主页

image-20221109155658303

新建仓库

image-20221109161414756

克隆

image-20221109160233128

提交内容到远程仓库
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写的同一份文件呢,这个时候也会有问题(冲突问题 保留谁的文件 比对代码保留对应的内容处理冲突(人工))

image-20221109173953035

git fetch origin master:temp #请求master的内容进行备份 备份的分支temp
git diff temp #比对
git merge temp #合并

vscode来处理

image-20221109174627419

image-20221109174354715

image-20221109175929086

扩展内容

http的协商缓存和强制缓存

缓存

概述:

下载一个电影到你本地就称为缓存,缓存的概念就是将资源下载你的电脑上,缓存的好处就是提高速度,他可以将我们的页面渲染的性能提高。对应的http为了提高我们的数据请求的速度性能他就内置缓存,为了减少对应的服务器处理提高对应的性能。

http内置缓存有俩种分别为
  • 强制缓存
  • 协商缓存

强制缓存

  • 就是强制性让页面请求的数据通过缓存读取(数据不变的)时效性(响应头)

  • cache-control 缓存控制器

    image-20221109142225826

    image-20221109142437442

  • 返回的状态码一定是200

协商缓存

  • 就是服务器和浏览器进行协商看对应的数据要重新响应 (请求一定会发生)

  • etag 这个内容是用于判断当前的文件是否发生变化

  • last-modeified 文件的最后修改时间通过这个时间判断数据是否发生变化了

    image-20221109142810320

  • 如果数据是没有更改那么给你返回的状态码是304

  • 如果数据发送变化那么重新响应数据 返回的状态码是200

http的协商缓存和强制缓存的区别
  • 强制缓存的优先级高于协商缓存(cache-control来控制 1.1新增的 1.0是一个expires来控制)
  • 强制缓存的数据一定没有发送变化 所以返回的状态码一定是200
  • 协商缓存缓存(etag和last-modified来共同控制)是数据可能发送变化 或者是强制缓存过期了 这个时候浏览器一定会发送请求
  • 如果数据发送变化 返回状态码为200 没有变化状态码304

标签:缓存,day29,--,暂存区,git,提交,讲解,分支
From: https://www.cnblogs.com/jje105/p/16876866.html

相关文章

  • 手机充电放电架构与工作流程原理讲解
    一、概述电池充放电电路是手机中最关键的电路之一,是手机一切功能的源头,如果该电路出现问题会使得整个手机工作不稳定,甚至无法开机。手机的电是从电池来的,电池电......
  • 解决golang报错:imports github.com/go-sql-driver/mysql from implicitly required mo
    这句话的意思是,从隐式的引入模块导入的比如我使用某个第三方包,这个第三方包里面包含了mysql包我在代码里直接使用了这个mysql包,但是在go.mod里没有引入,代码里ide是不会报......
  • git 添加过滤文件
    创建一个.gitignore的隐藏文件粘贴下边的代码#Createdbyhttps://www.toptal.com/developers/gitignore/api/objective-c#Editathttps://www.toptal.com/develop......
  • Install Git Daemon on Fedora
    Git-daemonisAreallysimpleserverforgitrepositories.Youcantakeadetailedunderstandingbyreading​​https://www.kernel.org/pub/software/scm/git/docs/......
  • 【luffy】协同开发,冲突解决,线上分支合并,pycharm操作git,前端首页组件编写,首页轮播图功
    目录1.协同开发2.冲突解决2.1多人同一分支开发出现冲突2.2分支合并出现冲突3.线上分支合并(pr,mr)4.pycharm操作git4.1clone4.2gitadd4.3gitcommit4.4gitpull......
  • Git - 错误集
    $gitpull20221109testmasterFromhttps://gitee.com/chaung_sun/20221109test*branchmaster->FETCH_HEADfatal:refusingtomergeunrelated......
  • 使用phpstudy搭建gitee开源项目[勾股dev]
    前段时间公司一直要求进行只是梳理,整合,想着做一套知识管理系统,在gitee上找到了一个开源的项目管理系统,带的有知识库管理子系统,索性就拿来使用了;gitee地址  https://git......
  • 另类在线编程Classroom for Github
    说到Github,我们一般认为它是一个软件工程师共享、塑造以及合作代码的平台,但你可能想不到它也是教人学软件编程的好地方,现在GitHub已经有了在线教育服务了!近年来,大量......
  • git合并master到本地分支
    首先将自己本地分支dev上的代码正常提交到git上,拉取代码到自己本地。然后:1.切换到master主分支上gitcheckoutmaster 2.将master更新的代码拉取到本地gitpul......
  • git面试题
    1你们公司分支方案是什么样的?我们公司的方案是master+dev+bug三条分支master是总分支,用来大版本的发布dev是我们一般开发用的bug分支是在master发布版本遇到问题是在b......