Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解

文章目录

  • Git在实战项目开发使用功能学习
    • 01.Git 初识
    • 02.Git 仓库
    • 03.Git 的三个区域
    • 04.Git 文件状态
    • 05.Git 暂存区作用
    • 06.练习-登录页面
    • 07.Git-切换版本
    • 08.删除文件
    • 09.忽略文件
    • 10.分支的概念
    • 11.练习-登录 bug 修复
    • 12.分支-合并与删除
    • 13.分支-合并与提交
    • 14.分支-合并冲突
    • 15.Git 常用命令
    • 16.Git 远程仓库
    • 17.Git 远程仓库 - 克隆
    • 18.多人协同开发
    • 19.VSCode 中使用 Git
    • 20.案例-发布项目 - 数据管理平台
    • 21.Git 常用命令总结

Git在实战项目开发使用功能学习

01.Git 初识

  1. 概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码

  2. 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容

  3. 如何学:

    个人本机使用:Git 基础命令和概念

    多人共享使用:团队开发同一个项目的代码版本管理

在这里插入图片描述

Windows系统:exe 程序,默认下一步即可

Mac系统:dmg 程序,默认下一步即可

检验成功:

1.打开 bash 终端(git 专用)

2.命令:git -v(查看版本号)

在这里插入图片描述

配置:用户名和邮箱,应用在每次提交代码版本时表明自己身份

命令:

git config --global user.name “itheima”

git config --global user.email “itheima@itcast.cn”

在这里插入图片描述

1.为何学习 Git ?

ü 管理代码版本,记录,切换,合并代码

2.Git 学习:

ü 现在本机自己使用

ü 再学习多人共享使用

3.如何安装使用?

ü 程序双击安装

ü 在 VSCode 中使用 bash 终端以及 git 命令

02.Git 仓库

Git 仓库(repository):记录文件状态内容的地方,存储着修改的历史记录

在这里插入图片描述

创建:

1.把本地文件夹转换成 Git 仓库:命令 git init

2.从其他服务器上克隆 Git 仓库

在这里插入图片描述

需求:创建一个空白的 Git 仓库

1.什么是 Git 仓库 ?

ü 记录文件状态内容和历史记录的地方(.git 文件夹)

2.如何创建 Git 仓库?

ü 把本地文件夹转换成 Git 仓库:命令 git init

ü 从其他服务器上克隆 Git 仓库

03.Git 的三个区域

Git 使用时:

工作区:实际开发时操作的文件夹

暂存区:保存之前的准备区域(暂存改动过的文件)

版本库:提交并保存暂存区中的内容,产生一个版本快照

命令作用
git add 文件名暂存指定文件
git add .暂存所有改动的文件
git commit -m “注释说明”提交并保存,产生版本快照

需求:把登录页面新增后,暂存并提交

在这里插入图片描述

1.Git 使用时有哪些区域 ?

ü 工作区,暂存区,版本库

2.工作区的内容,最终要如何保存在版本库中?

ü git add 添加到暂存区

ü等待时机后 git commit 提交保存到版本库,产生一次版本快照记录

04.Git 文件状态

Git 文件 2 种状态:

ü未跟踪:新文件,从未被 Git 管理过

ü已跟踪:Git 已经知道和管理的文件

文件状态概念场景
未跟踪(U)从未被 Git 管理过新文件
新添加(A)第一次被 Git 暂存之前版本记录无此文件
未修改(‘’)三个区域统一提交保存后
已修改(M)工作区内容变化修改了内容产生

使用:修改文件,暂存,提交保存记录,如此反复

在这里插入图片描述

需求:新增 css 文件,并使用 git status -s 查看文件状态,并最终提交

第一列是暂存区状态

第二列是工作区状态

在这里插入图片描述

1.Git 文件状态分为哪 2 种 ?

ü 未跟踪和已跟踪(新添加,未修改,已修改)

2.如何查看暂存区和工作区文件状态?

ü git status -s

05.Git 暂存区作用

暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦

暂存区 -> 覆盖 -> 工作区,命令:git restore 目标文件(注意:完全确认覆盖时使用)

从暂存区移除文件,命令:git rm --cached 目标文件

在这里插入图片描述

1.如何移除暂存区已暂存的文件?

ü git rm --cached 目标文件

06.练习-登录页面

需求:新增 JS 代码并暂存提交产生新的版本快照

步骤

1.新增 js 文件和内容

2.临时存放在暂存区

3.提交保存到版本库

在这里插入图片描述

07.Git-切换版本

概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区

查看提交历史:git log --oneline

在这里插入图片描述

回退命令:

git reset --soft 版本号(其他文件未跟踪)

git reset --hard 版本号

git reset --mixed 版本号 (与 git reset 等价)

注意1:只有记录在版本库的提交记录才能恢复

注意2:回退后,继续修改->暂存->提交操作即可(产生新的提交记录过程)

在这里插入图片描述

1.什么是 Git 回退版本?

ü 把版本库某个版本对应的内容快照,恢复到工作区/暂存区

2.强制覆盖暂存区和工作区的命令?

ü git reset --hard 版本号

3.如何查看提交历史?

ü git log --oneline

ü git reflog --oneline

08.删除文件

需求:删除 editor.js 文件,并产生一次版本记录

步骤:

1.手动删除工作区文件

2.暂存变更/手动删除暂存区文件造成变更

3.提交保存

总结:

工作区只要改变,都可以暂存提交产生新记录

在这里插入图片描述

09.忽略文件

概念:.gitignore 文件可以让 git 彻底忽略跟踪指定文件

目的:让 git 仓库更小更快,避免重复无意义的文件管理

例如:

1.系统或软件自动生成的文件

2.编译产生的结果文件

3.运行时生成的日志文件,缓存文件,临时文件等

4.涉密文件,密码,秘钥等文件

创建:

1.项目根目录新建 .gitignore 文件

2.填入相应配置来忽略指定文件

注意:如果文件已经被暂存区跟踪过,可以从暂存区移除即可

在这里插入图片描述

10.分支的概念

概念:本质上是指向提交节点的可变指针,默认名字是 master

注意:HEAD 指针影响工作区/暂存区的代码状态

在这里插入图片描述

在这里插入图片描述

场景:开发新需求 / 修复 Bug,保证主线代码随时可用,多人协同开发提高效率

例如:

在现有代码上创建新分支完成内容列表业务

突然需要紧急修复 Bug - 单独创建分支解决 Bug

在这里插入图片描述

需求:创建内容列表 content 分支,并产生 3 次提交记录

步骤:

  1. 创建分支命令:git branch 分支名

在这里插入图片描述

  1. 切换分支命令:git checkout 分支名

在这里插入图片描述

  1. 工作区准备代码并暂存提交,重复 3 次

    在这里插入图片描述

1.什么是 Git 分支?

ü 指针,指向提交记录

2.HEAD 指针的作用?

ü 影响暂存区和工作区的代码

3.如何创建和切换指针?

ü git branch 分支名

ü git checkout 分支名

11.练习-登录 bug 修复

需求:新建 login-bug 分支,做 2 次提交记录(对手机号长度,验证码长度做判断)

步骤:

1.切回到主分支:git checkout master

2.创建新分支:git branch login-bug

3.切换新分支:git checkout login-bug

4.修改代码,暂存,提交产生版本记录

12.分支-合并与删除

需求:把 login-bug 合并回到 master 分支并删除 login-bug 分支

步骤:

1.切回到要合入的分支上:git checkout master

2.合并其他分支过来:git merge login-bug

3.删除合并后的分支指针:git branch -d login-bug

在这里插入图片描述

13.分支-合并与提交

合并提交:发生于原分支产生了新的提交记录后,再合并回去时发生,自动使用多个快照记录合并后产生一次新的提交

步骤:

1.切回到要合入的分支上:git checkout master

2.合并其他分支过来:git merge content

3.删除合并后的分支:git branch -d content

在这里插入图片描述

最后合并回到主分支上时,提交记录流程图:

注意:提交记录的顺序按照产生的先后顺序排列,而非合并的先后顺序

在这里插入图片描述

14.分支-合并冲突

需求1:基于 master 新建 publish 分支,完成发布文章业务,然后修改内容页面的 html 文件的 title 标签,并提交一次

需求2:切换到 master,也在修改内容页面的 html 文件的 title 标签,并提交一次

冲突:把 publish 分支合并到 master 回来,产生合并冲突

概念:不同分支中,对同一个文件的同一部分修改,Git 无法干净的合并,产生合并冲突

解决:

1.打开 VSCode 找到冲突文件并手动解决

2.解决后需要提交一次记录

避免:(多交流)

1.按页面划分不同分支开发

2.公共代码在统一文件夹维护

3.Node等软件版本统一,npm 包统一下载

在这里插入图片描述

15.Git 常用命令

命令作用注意
git -v查看 git 版本
git init初始化 git 仓库
git add 文件标识暂存某个文件文件标识以终端为起始的相对路径
git add .暂存所有文件
git commit -m ‘说明注释’提交产生版本记录每次提交,把暂存区内容快照一份
git status查看文件状态 - 详细信息
git status -s查看文件状态 - 简略信息第一列是暂存区状态,第二列是工作区状态
git ls-files查看暂存区文件列表
git restore 文件标识从暂存区恢复到工作区如果文件标识为 . 则恢复所有文件
git rm --cached 文件标识从暂存区移除文件不让 git 跟踪文件变化
git log查看提交记录 - 详细信息
git log --oneline查看提交记录 - 简略信息版本号 分支指针 提交时说明注释
命令作用注意
git reflog --oneline查看完整历史 - 简略消息包括提交,切换,回退等所有记录
git reset 版本号切换版本代码到暂存区和工作区–soft 模式保留暂存区和工作区原本内容 --hard 模式不保留暂存区和工作区原本内容 --mixed 模式不保留暂存区,工作区保留(默认) 先覆盖到暂存区,再用暂存区对比覆盖工作区
git branch 分支名创建分支
git branch查看本地分支
git branch -d 分支名删除分支请确保记录已经合并到别的分支下,再删除分支
git checkout 分支名切换分支
git checkout -b 分支名创建并立刻切换分支
git merge 分支名把分支提交历史记录合并到当前所在分支

16.Git 远程仓库

概念:托管在因特网或其他网络中的你的项目的版本库

作用:保存版本库的历史记录,多人协作

创建:公司自己服务器 / 第三方托管平台(Gitee,GitLab,GitHub…)

在这里插入图片描述

需求:创建远程版本库,并把本地 Git 仓库推送上去保存

步骤:

1.注册第三方托管平台网站账号

2.新建仓库得到远程仓库 Git 地址

3.本地 Git 仓库添加远程仓库原点地址

命令:git remote add 远程仓库别名 远程仓库地址

例如:git remote add origin https://gitee.com/lidongxu/work.git

4.本地 Git 仓库推送版本记录到远程仓库

命令:git push -u 远程仓库别名 本地和远程分支名

例如:git push -u origin master

完整写法:git push --set-upstream origin master:master

在这里插入图片描述

1.远程版本库的作用?

ü 保存提交历史记录,多人共享

2.远程版本库使用步骤?

ü 创建远程版本库(自己服务器/第三方托管平台)

ü 本地版本库设置远程地址

ü 推送本地版本库到远程

3.推送的命令?

ü git push -u origin master

17.Git 远程仓库 - 克隆

克隆:拷贝一个 Git 仓库到本地,进行使用

命令:git clone 远程仓库地址,例如:git clone https://gitee.com/lidongxu/work.git

效果:在运行命令所在文件夹,生成 work 项目文件夹(包含版本库,并映射到暂存区和工作区)

注意1:Git 本地仓库已经建立好和远程仓库的链接

注意2:仓库公开随意克隆,推送需要身为仓库团队成员

在这里插入图片描述

18.多人协同开发

需求:小传新代码共享给小智

步骤:

1.小传开发代码 -> 工作区 -> 暂存区 -> 提交 -> 拉取(可选)-> 推送

2.小智 -> 拉取(后续也可以开发代码 -> … -> 推送)

3.想要看到别人同步上去的最新内容:git pull origin master 等价于

git fetch origin master:master(获取远程分支记录到本地,未合并)

git merge origin/master (把远程分支记录合并到所在分支下)

在这里插入图片描述

19.VSCode 中使用 Git

使用:源代码管理,进行暂存,撤销,对比差异,提交等操作

注意:VSCode 打开的项目文件夹下需要有 .git 仓库

在这里插入图片描述

20.案例-发布项目 - 数据管理平台

需求:把 Webpack 压缩好的 dist 分发文件夹网页,部署到码云上,开启 Page 服务在互联网中浏览

步骤:

1.初始化本地 Git 仓库(这次是非空文件夹-配套素材 dist 文件夹)

2.初始化远程 Git 仓库(这一次也是非空的)

3.本地配置远程仓库链接

4.本地拉取合并一下(确认本地要包含远程内容时使用)

5.本地推送到远程 Git 仓库

6.开启 page 网页服务得到地址浏览

21.Git 常用命令总结

命令作用注意
git remote add 远程仓库别名 远程仓库地址添加远程仓库地址别名唯一,地址是 .git 结尾的网址
git remote -v查看远程仓库地址
git remote remove 远程仓库别名删除远程仓库地址
git pull 远程仓库别名 分支名拉取完整写法:git pull 远程仓库别名 远程分支名:本地分支名 等价于:git fetch 和 git merge
git push 远程仓库别名 分支名推送完整写法:git push 远程仓库别名 本地分支名:远程分支名 -u:建立通道后以后可以简写 git push
git pull --rebase 远程仓库别名 分支名拉取合并合并没有关系的记录
git clone 远程仓库地址克隆从0得到一个远程的Git仓库到本地使用

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

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

相关文章

循环神经网络RNN专题(01/6)

一、说明 RNN用于处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么&a…

【演讲比赛流程管理系统(C++版)】

一、演讲比赛程序需求 1.1、比赛规则 学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛 每名选手都有对应的编号,如10001~10012 比赛方式:分组比赛,每组6个人 第一轮分为两个小组&a…

【深度测试】如何分析脚本以及对脚本进行测试

线上会存在一种任务,定时或者手动出发,我们称之为“脚本”,也可以称之为“job” 一、脚本的特性 无过程:只有开始和结束,过程迅速且黑盒。无交互:脚本处理的业务场景都几乎没有交互,只有数据被…

算法篇之二分

二分算法简介 特点 最简单的一种算法,也是最恶心,细节最多,最容易写出死循环的算法时间复杂度O(logN) 如何学习 明白其中的算法原理,二分并不是只有数组有序的的时候使用,而是看是否具有二段性。模板 朴素的二分模…

TCP TIME_WAIT 过多怎么处理

文章目录 1.什么是 TCP TIME_WAIT?2.为什么要 TIME_WAIT?3.TIME_WAIT 过多的影响4.解决办法4.1 调整短连接为长连接4.2 调整系统内核参数 5.小结参考文献 1.什么是 TCP TIME_WAIT? TCP 断开连接四次挥手过程中,主动断开连接的一方&#xff…

BeanFactory创建过程(基于Servlet)

BeanFactory创建过程(基于Servlet) 1. 概述1.2 那么问题就来了1.2.1 谁负责AnnotationConfigServletWebServerApplicationContext实例呢?1.2.2 ApplicationContextFactory初始化过程又是怎么样的? 1.3 总结 2. 最后 1. 概述 Anno…

什么可以用手机蓝牙控制LED???#串口通信【下】

什么可以用手机蓝牙控制LED???#串口通信【下】 前言预备知识1.小白玩串口控制的ASSII避坑1.1问题引入1.2解决问题 2.串口支持单词型指令控制2.1实现串口支持单词型指令控制的核心思路2.2利用字符数组来承接单词型指令2.3利用strstr函数来查找…

【Time Series】LSTM代码实战

一、简介 还是那句话,"时间序列金融"是一个很有"钱"景的话题,还是想尝试采用Stock时间序列预测任务DeepLearning。本文提供了LSTM预测股票的源代码。 二、算法原理 长短期记忆网络(LSTM)是一种特殊的循环神经…

如何衡量代码的复杂度

圈复杂度概要 最近的培训中了解到了一个概念,叫做圈复杂度。 圈复杂度(Cyclomatic Complexity)是一种衡量程序复杂度的度量方法。它由美国计算机科学家 Thomas J. McCabe 在 1976 年提出。圈复杂度通过统计程序的控制流图中的决策结构&…

linux有关安全的几个基本配置,禁止root登录,新建root权限账号

一、不安装多余的软件,能最小化安装就不要安装图形化界面,然后根据需求安装需要的软件。 二、防火墙要启用,如果您的这台服务器对外有服务只要放开服务就好了,就是说白了白名单,切忌一上来第一件事儿就是关闭防火墙&a…

Mobileye CES 2024 自动驾驶新技术新方向

Mobileye亮相2024年国际消费类电子产品展览会推出什么自动驾驶新技术? Mobileye再次亮相CES,展示了我们的最新技术,并推出了Mobileye DXP--我们全新的驾驶体验平台。 与往年一样,Mobileye是拉斯维加斯展会现场的一大亮点,让参观…

一文读懂Prodigal教程

2.prodigal教程 2.1 介绍 Prodigal 由橡树岭国家实验室和田纳西大学诺克斯维尔分校于2007年在能源部联合基因组研究所的主持下联合开发,是一种用于细菌和古细菌基因组的蛋白质编码基因预测软件工具,Prodigal 已成为世界上最受欢迎的微生物基因预测算法…

day28 节点操作——克隆节点、删除节点

目录 克隆节点删除节点 克隆节点 特殊情况下新增节点按以下操作: 复制一个原有的节点把复制的节点放入到指定的元素内部 克隆节点 元素.cloneNode(布尔值) cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值 若为true,则代表克隆时…

Vue3批量异步更新是如何实现

文章目录 一、什么是调度执行二、如何实现可调度?三、批量更新 & 异步更新四、Vue原理五、最后 一、什么是调度执行 多次修改数据(例如自身num10次),只进行一次页面渲染(页面只会渲染最后一次num10) 指的是响应式数据发生变化…

C++ copy()函数详细介绍

copy() 是一个标准库函数,位于 头文件中。它用于将一个容器中的元素复制到另一个容器中,或者将一个范围内的元素复制到另一个范围中。 函数参数介绍 copy( first, last, d_first );first 和 last:表示输入范围的迭代器。 first 指向要复制的…

centos7 安装 java17 安装 idea

删除旧版本的java或者说是自带的,免得干扰 查找java [wanglcentos7 java]$ rpm -qa|grep javajava-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch …

展台设计搭建中6个关键元素

一、哪种风格的会展展台设计更显示设计感 从已有的展台布置局面可以看出,不同展台设计有着不同的标准与选择原则,现有的一系列展台设计标识会随着现代化会展的提升重新进入更新诉求阶段。 二、展台设计一般会有那种可以选择的类别 从出现在展台设计优化阶…

React实现组件扩展机制

在java中,SPI机制是Java中提供的一种服务发现机制。同样,前端也很需要这种机制,这样可以做到组件可插拔,可替换,减少相互冗余。 快速使用 1.扩展点使用 通过使用Extension组件定义扩展点,通过name标记扩展…

2023爱分析·知识库问答市场厂商评估报告:爱数

01 研究范围定义 研究范围: 大模型是指通过在海量数据上依托强大算力资源进行训练后能完成大量不同下游任务的模型。2023年以来,ChatGPT引爆全球大模型市场。国内众多大模型先后公测,众多互联网领军者投身大模型事业,使得大模型…

C++ //练习 3.39 编写一段程序,比较两个string对象。再编写一段程序,比较两个C风格字符串的内容。

C Primer(第5版) 练习 3.39 练习 3.39 编写一段程序,比较两个string对象。再编写一段程序,比较两个C风格字符串的内容。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 /*******…