Git宝典

news2024/11/17 6:44:42

版本管理工具介绍

现在比较流行的版本管理工具是git,但是实际上git是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,如svn

版本管理发展简史

img

SVN(SubVersion)

工作流程

SVN是集中式版本控制系统,版本库是集中放在中央服务器的

工作流程如下:

  1. 从中央服务器远程仓库下载代码
  2. 修改后将代码提交到中央服务器远程仓库

优缺点:

  • 优点:简单,易操作
  • 缺点:所有代码必须放在中央服务器
    • 服务器一旦宕机无法提交代码,即容错性较差
    • 离线无法提交代码,无法及时记录我们的提交行为

svn流程图:

img

Git

工作流程

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库

本地仓库和远程仓库

工作流程如下:

  1. 从远程仓库中克隆或拉取代码到本地仓库(clone/pull)
  2. 从本地进行代码修改
  3. 在提交前先将代码提交到暂存区
  4. 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

img

总结

git和svn的区别:

  1. svn是集中式版本控制工具,git是分布式版本控制工具
  2. svn不支持离线提交,git支持离线提交代码

Git的安装

git的下载

下载地址: https://git-scm.com/download

img

安装

img

资料地址:链接:https://pan.baidu.com/s/1A0woQ4juJ42eMJpaj2va2Q?pwd=v3e8
提取码:v3e8

  1. 按照上图的顺序直接下一步傻瓜式安装

    img

    img

    img

    img

  2. 其中安装的过程中需要填写一个邮箱和用户名(任意即可)

    img

  3. 注意:安装完毕需要重启资源管理器,或者重启电脑!!!

  4. 更改语言

img

Git工作流程

Git初始化

先初始化一个本地仓

  1. 新建测试文件夹
  2. 进入文件夹,然后右键创建版本库

此时会看到:

  1. 文件上多了一个绿色的图标
  2. 文件夹内部生成了一个.git隐藏文件夹

Git流程

常用命令流程图

img

概念

  • 本地仓库:实在开发人员自己电脑上的Git仓库,存放自己的代码(.git隐藏文件夹就是自己的本地仓库)

  • 远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com上的仓库,或者是自己公司的服务器)

  • 工作区:自己写代码(文档的地方)

  • 暂存区:在本地仓库中的一个特殊文件(index)叫做暂存区,临时存储即将要提交的文件

命令

  • Clone:克隆,将远程仓库复制到本地仓库
  • Push:推送,将本地仓库代码上传到远程仓库
  • Pull:拉取,将远程仓库代码下载到本地仓库,并将代码克隆到本地工作区

img

Git的基本使用

TorToiseGit操作本地仓库

初始化仓库

  1. 方法一:

    新建一个文件夹,进入文件夹内部操作

    右键–>在这里创建版本库

    img

    注意:不要在桌面上操作,否则桌面就是一个仓库

  2. 方法二:

    右键–>Git GUI here

    img

  3. 方法三:命令行格式

    git init

    img

创建完毕仓库,此时在创建的文件夹下有一个.git文件已经生成,并且仓库文件夹上多了一个绿色图标

img

添加文件

  1. 在仓库中新建一个文件
  2. 选中新建的文件–>右键–>TortoiseGit–>添加
  3. 此时为文件夹上多了一个+

img

提交文件至本地仓库

  1. 选中文件
  2. 右键–>git提交

img[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KYhuCdtz-1684478887842)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]

修改文件,与再次提交文件

修改文件之后,文件上会多了一个红色感叹号,表示上次提交后该文件被修改过,再次提交后文件图标变成绿色

img

文件状态讲解

Git工作目录下的文件存在两种状态:

  • untracked 未跟踪(未被纳入版本控制):比如新建的文件(此时文件夹上没有图标或者有一个“问号”
  • tracked 已跟踪(被纳入版本控制)
    1. Staged 已暂存状态 : 添加 但未提交状态(此时文件夹上有一个“加号”)
    2. Unmodified 未修改状态: 已提交(此时文件夹上有一个“对号”)
    3. Modified 已修改状态 : 修改了,但是没有提交(此时文件夹上有一个“红色感叹号”)

img

这些文件的状态会随着执行Git的命令发生变化

img

修改文件,不提交和上一个版本比较差异

修改文件,此时不要提交

选中文件–>右键–>TortoiseGit–>比较差异

img

查看提交历史记录

选中文件

右键–>TortoiseGit–>显示日志

此时可以看到所有的历史提交记录

img

注意:如果你想要更改你的用户名:

  1. 右键–>TortoiseGit–>设置

    img

  2. 选择GIt–>全局按钮—>修改用户名和邮件地址–>点击应用–>确定

    img

回退至历史版本

右键–>TortoiseGit–>显示日志

选中某个版本–>进行如下操作

img

img

文件删除

本地删除与恢复

直接选中文件删除的话,只是删除了本地工作区的文件,并没有删除仓库中的文件,此时可以回退。如:

  1. 文件删除
  2. 右键–>TortoiseGit–>还原

此时会发现文件被恢复了

img

从版本库删除

如果想要将某文件从服务器删除,需要进行如下操作:

  1. 删除文件,和上面操作一样
  2. 提交,此时服务器文件已经删除(历史版本还在,还是可以恢复)

从版本库删除,但是不删除本地

可以只删除服务器上的文件,但是本地文件并不删除

注意:删除之后需要提交,才会真正的从服务器删除

img

忽略提交

img

img

此时在根目录下会生成一个.gitignore文件

忽略文件如何阅读,常见格式

#所有以.a结尾的文件夹被忽略(递归)

*.a

#不管其他规则怎样,强制不忽略 lib.a

!lib.a

#只忽略bulid文件夹下的所有内容(递归)这里是文件夹

bulid/

#忽略doc目录下以*.txt结尾的文件(不递归)

doc/*.txt

#忽略doc目录下以*.pdf结尾的文件(递归)

doc/**/*.pdf

Git的基本使用

TortoiseGit操作本地仓库(分支)

分支的概念

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间不影响。

为什么要使用分支

单线程开发

img

如:有一个任务需要完成活动1,同时又需要在完成活动2的同时,撤销活动1,这时会比较棘手

多线程开发

img

创建分支

img

img

分支的查看切换

查看分支

查看分支图,会出现两个分支,当然也可以创建多个分支,可以看到多个分支的图形

img

切换分支

右键–>检出

img

分支的合并与删除

合并

当需求开发完毕之后,需要把需求的代码合并到主分支:

  1. 切换到主版本
  2. 右键–>合并即可将需求写的代码合并至主分支

此时代码自动合并到master分支

img

删除分支

img

冲突的处理
冲突的概念

开发人员在同一时间修改了同一地方的代码,导致合并到主分支上时,主分支不能只能判断第一行使用谁的代码,合并时会报错,这种现象叫做冲突

img

如何处理冲突

冲突的原因:

开发人员之间彼此没有沟通导致的同一时间节点修改了同一个地方的代码,合并时冲突

在处理冲突时,第一步应该找开发另一个需求的人员沟通,之后才是处理冲突

  1. 选中冲突的文件(带黄色感叹号的文件都是冲突的文件,如果有多个需要逐一处理)
  2. 右键–>编辑冲突
  3. 处理完毕后,标记已解决

img

img

标签

标签的概念

如果你的项目达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以给它打上标签(tag)。

如:想要为自己的项目发布一个“1.0版本”,需要给最新一次提交打上(HEAD)“v1.0”的标签

标签可以理解为项目里程碑的一个标记,一旦打上了这个标记,表示当前的代码将不允许提交

标签的创建

标签的创建和分支的创建操作几乎一样

img

标签的切换与删除

img

img

远程仓库

我们自己的代码不能总是放在本地,因为总是放在本地,一旦电脑出现故障,数据将会丢失。所以这里需要一个服务器,可以把代码放到服务器上,然后让别人下载,这样既可以备份代码,也可以进行团队写作开发

局域网仓库

可以搭建一个单间的局域网服务器共享代码

本地相对路径,多个文件夹之间共享代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDUyoYGD-1684478887843)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]img

开启局域网共享代码

img

img

局域网这中共享是没有安全控制的,都可以访问,如果想要搭建一个可以控制权限的服务器需要借助第三方软件

常用远程仓库托管服务

常见的免费互联网远程仓库托管服务如下:

www.github.com

www.gitee.com
www.gitlab.com

github:是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱

gitee:即码云,是oschina免费给企业用的,不用自己搭建环境

gitlab:类似github,一般用于在企业内搭建git私服,要自己搭环境

github(gitee)、gitlab不同点:

  1. github如果使用私有仓库是需要付费的(只能三个人协同开发,想要更多需要付费),gitlab可以在上面搭建私人的免费仓库
  2. gitlab让开发团队对他们的代码仓库拥有更多的控制,相对于github,它有不少的特色
    1. 允许免费设置仓库权限
    2. 允许用户选择分享一个project的部分代码
    3. 允许用户设置projject的获取权限,进一步提升安全性
    4. 可以设置获取到团队整体的改进进度
    5. 通过innersourcing让不在权限范围内的人访问不到该资源

码云账号注册

填写邮箱发送验证码,然后可以注册账号

img

img

创建远程仓库

img

新建仓库

img

各个类型仓库之间的区别

img

img

将本地代码推送到远端

img

img

img

此时刷新仓库发现代码已经存在

填写的用户信息会保存在本地,下次提交无需填写用户名和密码

从远程仓库克隆代码

同样可以从库中下载代码

新建一个文件夹repo2,进入然后进行如下操作

img

此时代码就已经下载下来了

代码的修改与提交,查看历史

此时修改代码就不能仅仅是提交到本地了,提交完毕应该推送到远端服务器。如果别人从远端仓库下载最新的代码其实是可以看到代码修改的记录的

git–> 显示日志

img

ssh连接概述

实际上git不仅仅支持用户名密码方式的配置,可以有另一种相对安全的配置即ssh方式配置

ssh方式的底层原理

ssh连接池是RAS加密算法,又称非对称加密,是一种现在公认的最安全的加密方式

公钥私钥加密可以看作是古代的“虎符”,在本地电脑一份,远程服务器上一份,只要“虎符”核对通过,表示身份无误,可以执行提交等操作,无需输入用户名密码

ssh密钥的生成

#生成公钥私钥

ssh-keygen -t rsa

一直回车即可

会默认用户目录 .ssh 目录生成一个默认的id_rsa文件,和id_rsa.pub

img

img

ssh密钥配置

img

img

如果克隆失败,在TortoiseGit设置中执行如下操作:

img

远程仓库的其他操作

概念

img

当从gitee上查看别人的项目的时候,可能会看到上图中的按钮

指数:是gitee网站根据当前项目的各项指标计算出来的一个值

img

img

star:点赞,这里跟CSDN一样并不容易获得点赞

Watch:如果你watch了某个开源项目,那么这个项目后续所有的改动你将收到通知

Fork:将别人的代码克隆到你自己的仓库中,

  • 作用一:如果担心某个优秀的项目别人突然有一天不开源了,你可以fork到自己仓库中
  • 作用二:修改别人的代码

项目操作:

  1. 可以删除修改自己仓库的基本信息
  2. 可以邀请其他人成为项目的开发人员或者管理人员

img

可以删除修改自己仓库的基本信息

img

利用gitee搭建个人主页

  • 将静态资源上传至仓库
  • 选择服务pages即可部署
    • 必须有个index.html文件
    • 只能搭建静态网站,动态网站需要租赁服务器搭建提供服务
    • gitee要求必须绑定手机号

命令行–Git基本操作

介绍

上述的操作,是客户端TortoiseGit操作的git,实际上底层依旧是使用的命令行帮我们执行,在早期git并没有窗口化工具,开发人员只能使用命令行模式

环境配置

当安装Git后首先要做的事情是设置用户名名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

#设置用户信息
git config --global user.name "muchen"
git config --global user.email "muchen@muchen.cn"
#查看配置信息
git config --list
git config user.name
#通过上面的命令设置的信息会保存在~/.gitconfig文件中

初始化本地仓库init

#初始化仓库带工作区
git init
#初始化仓库不带工作区
git init --bare

克隆clone

#从远程仓库克隆
git clone 远程仓库地址

查看状态status

#查看状态
git status
#查看状态,使输出信息更加简洁
git status -s

add

#将未跟踪的文件加入暂存区
git add <文件名>
#将暂存区的文件取消暂存(取消 add)
git reset <文件名>

commit

#git commit 将暂存区的文件修改提交到本地仓库
git commit -m "日志信息"  <文件名>  

删除rm

#从本地工作区 删除文件
git rm <文件名>
#如果本工作区误删,想要回退
git checkout head <文件名>

命令行–git远程仓库操作

查看远程

# 查看远程 列出指定的每一个远程服务器的简写
git remote
# 查看远程,列出简称和地址
git remote -v
#查看远程仓库详细地址
git remote show <仓库简称>

添加/移除远程仓库

# 添加远程仓库
git remote add <shortname> <url>

从远程仓库获取代码

# 从远程仓库克隆
git clone <url>
#从远程仓库拉取(拉取到.git目录,不会合并到工作区,工作区发生变化)
git fetch <shortname> <分支名称>
# 手动合并 把某个版本的某个分支合并到当前工作区
git merge <shortname>/<分支名称>
# 从远程仓库拉取(拉取到.git目录,合并到工作区,工作区不发生变化) = fetch+merge
git pull <shortname> <分支名称>
git pull <shortname> <分支名称> --allow-unrelated-histories # 强制拉取合并

注意:当前本地仓库不是从远程仓库克隆,而是本地仓库的仓库,并且本地仓库中存在的文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数–allow-unrelated-histories(如上命令)

# 将本地仓库推送至远程仓库的某个分支
git pull [remote-name] [branch-name]

命令行–分支

# 默认 分支名称为 master
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 创建分支
git branch <分支名>
# 切换分支 
git checkout <分支名>
# 删除分支(如果分支已经修改过,则不允许删除)
git branch -d  <分支名>
# 强制删除分支
git branch -D  <分支名>
# 提交分支至远程仓库
git push <仓库简称> <分支名称>
# 合并分支 将其他分支合并至当前工作区
git merge <分支名称>
# 删除远程仓库分支
git push origin -d brandchName

命令行–tag

# 列出所有tag
git tag
# 查看tag详细信息 
git show [tagName]
# 新建一个tag
git tag [tagName]
# 提交指定tag
$ git push [仓库简称] [tagName]
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag (注意 空格)
$ git push origin :refs/tags/[tag]

img
er

列出所有本地分支

git branch

列出所有远程分支

git branch -r

列出所有本地分支和远程分支

git branch -a

创建分支

git branch <分支名>

切换分支

git checkout <分支名>

删除分支(如果分支已经修改过,则不允许删除)

git branch -d <分支名>

强制删除分支

git branch -D <分支名>


```shell
# 提交分支至远程仓库
git push <仓库简称> <分支名称>
# 合并分支 将其他分支合并至当前工作区
git merge <分支名称>
# 删除远程仓库分支
git push origin -d brandchName

命令行–tag

# 列出所有tag
git tag
# 查看tag详细信息 
git show [tagName]
# 新建一个tag
git tag [tagName]
# 提交指定tag
$ git push [仓库简称] [tagName]
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag (注意 空格)
$ git push origin :refs/tags/[tag]

img

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

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

相关文章

ClickHouse介绍_安装_准备工作_单机安装---大数据之ClickHouse数据库002

首先要修改一下centos的一些限制,这里是文件数的限制,还有进程的限制 要关闭selinux要关闭防火墙 可以看到执行ulimit -a 可以看到linux系统的一些限制 我们要修改的是上面标注的两个配置,一个是文件数,一个是进程数 去编辑这个文件去修改配置 添加上,这些配置 * soft nofile…

京东商品详情API调用说明 京东商品库存销量接口

尊敬的开发人员&#xff1a; 感谢您选择使用京东API进行开发。下面为您提供一份简要的API调用说明&#xff0c;帮助您快速上手并实现所需功能。 1.注册京东开放平台账户并创建应用 首先&#xff0c;您需要在 https://o0b.cn/jennif/ 网站上注册一个京东开放平台的账户&#…

mybatis的一级二级缓存详解及源码解剖

文章目录 什么是一级缓存&#xff1f;什么是二级缓存&#xff1f;一级缓存二级缓存有什么不同&#xff1f;执行流程源码流程解剖一级缓存失效场景分析二级缓存结构及需要解决的问题二级缓存执行流程二级缓存获取和commit源码解剖总结 什么是一级缓存&#xff1f; 一级缓存是指…

如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总

苹果APP安装包ipa如何安装在手机上&#xff1f;很多人不知道怎么把ipa文件安装到手机上&#xff0c;这里就整理了苹果APP安装到iOS设备上的方式&#xff0c;仅供参考 苹果APP安装包ipa如何安装在手机上&#xff1f;使用过苹果手机的人应该深有感触&#xff0c;那就是苹果APP安…

opencv 裁剪超大 tif 图像制作深度学习数据集

文章目录 1. 尝试暴力裁剪&#xff08;24 位&#xff09;2. 带透明度读取 &#xff08;32 位&#xff09;3. 裁剪标签&#xff08;8 位&#xff09; 本文只是进行了简单的尝试&#xff0c;未单独处理最右侧、最下侧和右下角区域&#xff0c;且未设置重叠率 若使用 gdal 进行 ti…

【1】Numpy基础

1 N维数组对象&#xff08;ndarray&#xff09; 先理解如何通过numpy进行批次计算&#xff1a; 引入numpy&#xff0c;随机生成数组&#xff1a; import numpy as npdatanp.random.randn(2,3) print(data) print(data*10) print(datadata)[[ 0.88001557 -0.70682337 0.81193…

Linux网络编程——基于UDP协议的简易聊天室

0.关注博主有更多知识 操作系统入门知识合集 目录 1.UDP服务端 1.1消息转发的实现 2.UDP客户端 3.效果展示 1.UDP服务端 使用C、C混编的方式在Linux环境下实现一个简单的UDP服务端。那么我们先看代码&#xff0c;然后逐步分析&#xff1a; // udpServer.hpp #pragma o…

sql 性能优化基于explain调优(二)

文章目录 Explain问题描述解决方案 Explain 关于Explain具体怎么用以及有哪些优点&#xff0c;我就不过多的跟大家去讲解了&#xff0c;从我最初的文章: explain是什么&#xff1f;explain优缺点及如何使用explain优化SQL&#xff0c;大家可以点击这个链接看一下&#xff0c;对…

Midjourney基础教程

本教程收集于:AIGC从入门到精通教程 Midjourney基础教程 目录 新手快速入门知识汇总:

Facebook 广告效果越来越差,怎么办?

在如今的数字营销领域中&#xff0c;Facebook作为独立站卖家首选的推广引流平台&#xff0c;具备了许多优势。 一方面&#xff0c;Facebook拥有庞大的用户数量&#xff0c;是全球最大的社交媒体平台之一。另一方面&#xff0c;Facebook的广告算法可以将广告推送给更加精准的受…

创建.Net MAUI工程

下载Visual Studio或Visual Studio for Mac或Rider&#xff08;收费&#xff09; Visual Studio for Mac 2022Visual StudioRider 工具推荐 如果使用的是Windows电脑&#xff0c;建议使用Visual Studio 2022并安装ReSharper插件。如果使用的是Mac电脑&#xff0c;建议使用Ri…

【教程】用GraphSAGE和UnsupervisedSampler进行节点表示学习

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 目录 无监督的GraphSAGE 加载 CORA 网络数据 按需采样的无监督GraphSAGE 无监督取样器&#xff08;UnsupervisedSampler&#xff09; 提取节点嵌入 节点嵌入的可视化 下游任务 数据拆分 分类器训练 无监…

8.1.0版本ELK搭建,不开启xpack认证机制

8.1.0版本ELK搭建&#xff0c;不开启xpack认证机制 部署环境安排下载安装包服务器环境配置部署elasticsearch部署kibana部署logstash部署httpd&#xff0c;filebeat配置kibana页面 部署环境安排 ip部署服务192.168.0.121kibana,elasticsearch192.168.0.83elasticsearch,logsta…

Spring boot 注解@Async不生效 无效 不起作用

今天在做公司项目时&#xff0c;有一个发邮件的需求。所以写了一个发送邮件的方法后来发现发邮件很慢&#xff0c;导致接口响应也很慢。于是我便想到要使用异步调用去处理这个方法。于是我把注解Async 加到了自己service类下的一个发邮件的一个方法&#xff0c;后来发现并没有生…

Push rejected,用Git修改已提交的注释

问题&#xff1a;有时候因注释与git规定的模板不匹配&#xff0c;会导致远程提交被拒绝 Push rejected 解决&#xff1a;修改不符合规范的注释再push即可 1、打开命令窗口 在项目根目录下右键点击出 Git批处理命令窗口。 2、查看已提交的commit 运行命令&#xff1a;git reba…

dataease源码阅读

源码&#xff1a;https://gitee.com/fit2cloud-feizhiyun/DataEase.git 文件夹目录 1.仪表盘主路由&#xff1a;frontend/src/views/panel |-- penel |-- index.vue |-- panel.js |-- appTemplate | |-- AppTemplateContent.vue | |-- index.vue | |-- component | |-- AppT…

华为OD机试真题 Java 实现【机器人活动区域】【2023Q1 200分】

一、题目描述 现有一个机器人&#xff0c;可放置于 M N的网格中任意位置&#xff0c;每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时&#xff0c;机器人可在网格间移动 问题&#xff1a;求机器人可活动的最大范围对应的网格点数目。 说明&a…

ESP32-C2开发板Homekit例程

准备 1.1硬件ESP32 C2开发板&#xff0c;如图1-1所示 图1-1 ESP32 C2开发板 1.2软件 CozyLife APP可以在各大应用市场搜索下载&#xff0c;也可以扫描二维码下载如图1-2所示 HomeKit flash download tool 烧录工具 esp32c2 homkit演示固件 烧录教程 打开flash_download_to…

每日一题161——对角线遍历

给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,4,7,5,3,6,8,9] 示例 2&#xff1a; 输入&#xff1a;mat …

【大数据学习篇8】 热门品类Top10分析

在HBase命令行工具中执行“list”命令&#xff0c;查看HBase数据库中的所有数据表。学习目标/Target 掌握热门品类Top10分析实现思路 掌握如何创建Spark连接并读取数据集 掌握利用Spark获取业务数据 掌握利用Spark统计品类的行为类型 掌握利用Spark过滤品类的行为类型 掌握利用…