【b站李同学的Lee】3 Github【gitgithub】入门教程,必学!

课程地址:【【git&github】入门教程,必学!】 https://www.bilibili.com/video/BV1cE411G7yc/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155

目录

3 Github

3.1 注册

3.2 多人协作开发流程

3.2.1 远程仓库

3.2.2 本地仓库推送到远程仓库

3.2.3 远程仓库地址别名

3.2.4 远程仓库克隆到本地仓库

3.2.5 推送到远程仓库

3.2.6 将最新版本更新到本地仓库

3.3 冲突

3.3.1 冲突的发生

3.3.2 制造冲突

3.4 跨团队协作

3.4.1 跨团队协作场景

3.4.2 向其他仓库贡献代码

3.4.3 原仓库作者审核

3.4.4 总结

3.7 ssh免登陆

3.7.1 ssh产生原因

3.7.2 ssh的身份验证

3.7.3 ssh实现免登陆操作

1 生成密钥

2 配置网站公钥

3 操作仓库

4 总结

3.8 git忽略清单

3.9 为仓库添加详细的说明


3 Github

前面讲的都是使用git操作本地仓库,如果整个项目都是1个人开发的,只用本地仓库就足够了。但是实际开发中,还存在多个人同时开发1个项目的情况。这时需要多个人共享一份代码。

在版本控制系统中,大约90%的操作都是在本地仓库中进行的:暂存、提交,查看状态或历史记录等。除此之外,如果仅有1个人在这个项目里工作,那么永远没有机会需要设置一个远程仓库。

只有当需要和开发团队共享数据时,设置一个远程仓库才有意义。可以将远程仓库想象成一个文件管理服务器,利用这个服务器可以与开发团队的其他成员进行数据交流。

这不意味着开发人员直接在远程仓库中开发。开发人员仍然需要在本地仓库进行开发。

当功能开发完成后,开发人员将本地仓库的代码推送到公共仓库中。

其他开发人员可以从公共仓库中拉取你推送的代码,这样就实现多人协作开发。

本地仓库位于每个开发人员的本地计算机上。相反,公共仓库被设置在所有开发人员访问到的远程服务器上,基本都是在互联网上或本地局域网中。因此也称公共仓库为远程仓库。

知名git仓库服务的提供商,提供公共仓库服务的网站——Github。

要使用Github,需要在网站注册Github账号。

3.1 注册

登录GitHub: Let’s build from here · GitHub,点击sign up按钮进行注册,按照要求填写注册信息即可注册成功。

3.2 多人协作开发流程

  1. A在自己的计算机中创建本地仓库
  2. A在github中创建远程仓库
  3. A将本地仓库推送到远程仓库
  4. B克隆远程仓库到本地进行开发
  5. B将本地仓库中开发的内容推送到远程仓库
  6. A将远程仓库中的最新内容拉取到本地

3.2.1 远程仓库

  • 1 创建本地仓库
    • 新建文件夹,然后在当前目录下执行git init
    • 然后新建index.html,并添加到暂存区(git add index.html),然后提交到本地仓库(git commit -m index.html)
  • 2 创建远程仓库

 点击new按钮

输入新建的仓库名称,点击按钮

远程仓库创建完毕。

3.2.2 本地仓库推送到远程仓库

此时来到了仓库的首页。

此时github显示了仓库的基本信息,以及如何向仓库推送内容的命令。

远程仓库有两种形式,1是https开头的形式,第2种是SSH。现在只需要关注https就可以了。

已知远程仓库地址,如果向仓库推送内容?

方法1:在命令行工具中创建一个空的仓库,然后推送到当前远程仓库;

方法2:从命令行工具中推送一个已经存在的仓库到远程仓库;

方法3:从其他的仓库中导入内容。

这里使用方法2.

具体如何推送?将本地仓库推送到远程仓库。

1 git push 远程仓库地址 分支名称

比如想推送master主分支,那么分支名称就写master

2 git push 远程仓库地址别名 分支名称

3 git push -u 远程仓库地址别名 分支名称

        -u记住推送地址及分支,下次推送只需要输入 git push 即可。

4 git remote add 远程仓库地址别名 远程仓库地址

实践

执行1命令git push 远程仓库地址 分支名称,提示向远程仓库推送了一个分支,将本地的master推送到远程仓库的master

回到github并刷新,可以看到提交的index.html文件。

3.2.3 远程仓库地址别名

A程序员将本地仓库推送到远程仓库,但是刚才输入的命令过于繁琐,每次推送时都要写上仓库的远程地址。

每次写远程地址时不是很方便,为解决这个问题,可以为远程仓库地址起别名,再推送远程地址时就比较方便了。

如何给远程仓库起别名呢?用到的命令是

 git remote add 远程仓库地址别名 远程仓库地址

远程仓库地址别名一般起名为origin。

向远程仓库别名推送分支

git push origin master

实践

1 为远程仓库起别名

2 向远程仓库别名推送master

注意:第二次提交,不需要再次输入用户名和密码。此功能是win10系统记住的用户名和密码。

win10将用户名和密码保存在哪里了呢?

要想更加方便提交代码。

 git push -u origin master   -u记住推送地址及分支,下次推送只需要输入 git push 即可。

再推送到远程仓库,第三步命令直接git push就可以了。

总结:

1 git push 远程仓库地址 分支名称  

远程仓库地址太长了,所以我们起别名。

4 git remote add 远程仓库地址别名 远程仓库地址

下次提交可以直接写命令

2 git push 远程仓库地址别名 分支名称

起了别名发现命令还是比较长,所以在提交的时候对命令加上-u参数,-u表示记住推送地址及分支,下次推送只需要输入 git push 即可。

3 git push -u 远程仓库地址别名 分支名称

3.2.4 远程仓库克隆到本地仓库

3.2.1 程序员A创建本地仓库,创建远程仓库

3.2.2 程序员A将本地仓库推送到远程仓库

作为程序员B,与程序员A一起开发项目,不需要创建仓库。他可以将程序员A创建的仓库直接拿来使用。

此时程序员B要用到克隆命令,将程序员A创建的远程仓库克隆到程序员B的本地即可。

克隆远端数据仓库到本地: git clone 仓库地址

注意:克隆不需要身份验证,因为这里创建的仓库是开放的,任何人都可以克隆。

实践

此时程序员B的文件夹下多了git-demo-A文件夹。

3.2.5 推送到远程仓库

程序员B就可以在克隆仓库的基础上开发了。

开发完成后,程序员B要将开发成果提交到本地仓库,然后将本地仓库推送到远程仓库。

注意:

程序员B不能向远程仓库提交代码。如果我们创建的仓库可以被任何人随意提交代码,那么这个仓库就无法管理了。

程序员B如何向仓库提交代码呢?需要程序员A邀请程序员B成为当前项目的开发者。

如何邀请?

此处填写程序员B的github账号

后续复制邀请链接,并发给程序员B。

程序员B接受邀请链接,

(懒得搞第2个账号,我这里继续用程序员A来模拟这里的程序员B)

注意: 程序员B克隆的很全面,连程序员A添加的远程仓库别名也克隆过来了。因此程序员B可以直接使用 git push origin master来提交修改。

提交成功后可以看到远程仓库显示程序员B的提交信息。

3.2.6 将最新版本更新到本地仓库

3.2.5 程序员B将最新代码推送到远程仓库,此时程序员A本地仓库中没有程序员B提交的最新代码。

程序员A需要将远程仓库的最新版本拉取到本地仓库。

拉取远程仓库中最新的版本:git pull 远程仓库地址  分支名称

注意:拉取操作属于读操作,github不需要验证身份。

回到程序员A的项目目录。

拉取

结果

可以A的本地仓库的index.html文件多了一行程序员B添加的内容。

说明:git pull 和git clone命令的区别。

git pull命令只是拉取远程仓库最新的版本,最新版本是与本地仓库的版本进行比较的。所以git pull是在已有本地仓库的基础上进行的。

git clone命令完全克隆远程仓库,是在没有本地仓库的基础上进行的。git clone只需要在加入项目开发的时候用到,在克隆完成后就不需要这个命令了。

说明2:如果远程仓库的版本高于本地仓库的版本,此时本地仓库是不能向远程仓库提交的。本地仓库需先拉取远程仓库的内容到本地,然后再向远程仓库进行提交。

3.3 冲突

3.3.1 冲突的发生

在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突。

先向远程仓库推送的人才会推送成功,后推送的人推送会失败。

因为第一个人已经向远程仓库提交了版本,第二个人的本地仓库没有这个版本。导致远程仓库版本高于本地仓库版本,此时本地仓库不能向远程仓库提交。

第二个人需要将远程仓库的版本拉取到本地仓库,但由于两个人修改了同一个文件的同一个地方,因此导致冲突的发生。

冲突需要人为解决

冲突发生的时候工具是不能帮助我们决定怎么做的,需要人为解决。

因此第二个人需要在本地仓库先把冲突解决掉,然后再向远程仓库中提交才能提交成功。

3.3.2 制造冲突

没有第2个账号,这里口述一下冲突的发生。

程序员A修改index.html的第2行内容。然后将修改的文件添加到暂存区。然后将修改提交到本地仓库。然后将本地仓库推送到远程仓库。

程序员A修改index.html的第2行内容。后将修改的文件添加到暂存区。然后将修改提交到本地仓库。然后将本地仓库推送到远程仓库(此时是推送不上去的)。

冲突:程序员B在git push origin master时会失败。

解决冲突:

步骤1:程序员B将远程仓库最新版本拉取到本地。此时会提示有冲突conflict。

步骤2:切换到编辑器中

此时先把无用的东西删除。

步骤3:将当前做出的修改添加到暂存区中(git add),然后提交到本地仓库中(git commit)。此时冲突就解决完成了。

注意:提交信息可以写“解决冲突”

步骤4:将本地仓库推送到远程仓库(git push)

步骤5:可以看到github上的远程仓库的文件已经包括程序员A和B提交的修改内容了。

3.4 跨团队协作

3.4.1 跨团队协作场景

github除了支持团队协作之外,还支持非团队协作。即你不是团队成员,也有方法向其他人的git仓库中提交代码。只是你提交的代码需要被审核,只有审核通过了才可以生效。

该功能的应用场景:比如说要完成一个网页效果,你在github上找到了一个可以实现这个效果的库。但是使用过程中发现这个库的功能并不完善,然后你将这个库进行了一番完善。此时你可以将你完善的代码提交给仓库的作者。如果仓库的作者认为你提交的代码十分有价值,原仓库的作者就会将你提交的代码合并到他的仓库中。

3.4.2 向其他仓库贡献代码

问题:如果才能向其他的仓库中贡献代码呢?

实践:程序员C访问程序员A创建的仓库git-demo-A,如果程序员C想为git-demo-A仓库贡献代码,要做以下几步。

步骤1:fork一下这个仓库(点击下图fork按钮)。

fork:有叉子的意思,实际上指的是将程序员A创建的仓库复制一份,且放到程序员C的github账户中。

然后就可以看到程序员C的github账户里也有git-demo-A仓库了,fork之后这个仓库就完全属于程序员C了。

然后程序员C克隆仓库到本地(git clone),在本地仓库进行修改。

注意这时克隆的是程序员Cgithub账号里的远程仓库地址。

修改完成后推送到当前远程仓库中来(git push)。

然后向原作者发送代码修改的请求。

点击页面的 Pull requests 按钮,然后点击 New pull request按钮,然后Create pull request,然后会在页面底部看到程序员C当前添加的内容。

然后与原作者进行对话,填写对话主题和详细信息。完成后点击Create pull request。

然后编辑的代码和填写的信息都会发送到原作者。

3.4.3 原仓库作者审核

切换到程序员A的视角。

程序员A的仓库中也有Pull requests。

可以发现程序员C发来的request,也可以对程序员C做回复,比如,问你的代码经过测试了吗等内容,且要对程序员C修改的内容进行审核。

确认没有问题,可以将代码合并到仓库中。

如何合并?

在与程序员C的对话里,可以看到Merge pull request的按钮,点击按钮即可合并程序员C提交的代码合并到程序员A的仓库中去。然后点击Confirm merge。

3.4.4 总结

  1. 程序员C fork 仓库
  2. 程序员C 将仓库克隆在本地进行修改
  3. 程序员C 将仓库推送到远程仓库
  4. 程序员C 发起 pull request
  5. 原仓库作者审核
  6. 原仓库作者合并代码

3.7 ssh免登陆

3.7.1 ssh产生原因

到目前为止,对远程仓库的操作采用的都是https协议的仓库地址,这种协议要实现身份验证,用户必须要提供用户名和密码,在正常情况下,每次向远程仓库推送内容都需要进行身份验证,都需要提供用户名和密码。只不过现在使用的是win10操作系统,在第一次输入完用户名和密码后,操作系统就帮我们记住了。下一次再推送时,使用的就是操作系统记住的用户名和密码。如果使用的操作系统不具备这个功能,那么每次推送时都需要输入用户名和密码。频繁的输入是一件十分头疼的事情。github提供了另外一种仓库通信协议,就是ssh协议,这种协议使用身份验证时不需要使用户名和密码。他可以实现免登陆操作。

3.7.2 ssh的身份验证

ssh如何做到身份验证的呢?

在ssh里,身份验证通过密钥实现。密钥是成对出现的,分为公钥和私钥。

ssh协议通过验证公钥和私钥的配对情况,决定验证是否通过。

举个例子,公钥相当于门锁,私钥相当于钥匙。如果钥匙可以打开门锁,说明他们是一对的,那么验证就通过了。

公钥和私钥需要开发者通过命令生成,实际上就是两个文件。公钥放在github的账户中,私钥保留在开发者的电脑中。

开发者通过ssh协议向远程仓库推送内容时,公钥和私钥会进行配对,如果配对成功,内容会推送失败。如果配对失败,内容会推送失败。

3.7.3 ssh实现免登陆操作

如果通过ssh实现免登陆操作?

1 生成密钥

步骤1:生成密钥:ssh-keygen

注意:第2-5个红框,git要求我们输入一些内容,但是git全部都有默认值,因此这里直接回车就可以了(一路回车)。然后就生成密钥了。

一对密钥实际就是两个文件。

这两个文件被存到系统目录下。

2 配置网站公钥

步骤2:一对密钥文件。

rsa是一种非对称加密方式,这里不进行展开。

通过代码编辑器打开公钥文件(实际存储了一堆字符串),复制文件内容。

去github网站

复制粘贴过来的公钥,然后点击Add SSH key。

标题会自动填充公钥里的内容。

然后公钥就被添加好了。

3 操作仓库

接着,使用ssh协议对仓库进行操作。

ssh协议的仓库地址。

  1. 对本地仓库的文件内容进行修改。
  2. 查看git管理的文件状态。
  3. 将修改后的文件添加到暂存区(git add)。
  4. 改动提交到本地仓库(git commit)。
  5. 本地仓库推送到远程仓库。使用ssh协议。
    1. 地址起别名(ssh协议的仓库地址还是有点长)    
    2. 使用远程别名推送内容

起别名:  git remote add origin_ssh git@github.com:abigale00/git-demo-A.git

推送内容到远程:git push origin_ssh master


以上,将本地内容推送到远程了,这个过程中没有输入用户名和密码。

因为在github网站中,存储了公钥。程序员A的电脑中保留了公钥对应的私钥。

在推送的时候,github会自动进行配对。

以上就是ssh实现免登陆操作。

4 总结

生成密钥:ssh-keygen

公钥添加到github的仓库中。

进行push推送时,私钥和公钥会进行配对,如果配对成功,那么就会push推送成功。

3.8 git忽略清单

将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git会忽略这些文件。

git忽略清单文件名称:.git

将工作目录中的文件全部添加到暂存区: git add .

在实际开发中,一次添加的文件可能有很多,为了方便,可以使用命令一次性将所有的文件添加到暂存区中,此时不希望被管理的文件也会被添加到暂存区中。

因此需要另外一个文件告诉git哪些文件不需要被管理。

在实际开发中,不需要被git管理。

比如node开发时的node_modules,放的都是项目开发时所依赖的第三方模块,这部分的文件是不会更改的,所以这部分没必要被git管理,也没必要上传到远程仓库里。

项目存在package.json文件,其他人只需要根据这个文件下载项目所依赖的文件就可以了。

比如,项目中会临时写一些测试代码文件,这些代码也不希望被管理。

实践

改了下 

git status

未跟踪的列表文件中有2个文件,没有index.html,因此index.html已经被写到了git的忽略清单文件。所以未跟踪的列表文件中就没有index.html了。

然后将工作目录的所有文件添加到暂存区中。

查看文件状态

原先有的index.html也被删除了。index.html文件不再被git跟踪管理。

3.9 为仓库添加详细的说明

GitHub - jquery/jquery: jQuery JavaScript Library

jQuery的官方仓库有一堆说明。

如何为自己的仓库添加说明。

在项目的根目录下建一个readme.md文件。文件内容会自动显示在仓库文件列表的下方。

在工作目录建md文件。

提交到本地仓库。

推送到远程仓库。

刷新页面,可以看到项目列表有readme.md文件,且在下方显示出内容。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL5.7详细安装步骤

MYSQL5.7详细安装步骤: 0、更换yum源 1、打开 mirrors.aliyun.com,选择centos的系统,点击帮助 2、执行命令:yum install wget -y 3、改变某些文件的名称 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base…

windows系统电脑弹窗“试图引用不存在令牌“如何解决?

windows系统电脑,弹出提示:试图引用不存在令牌,应该如何解决? 以管理员身份执行以下命令:(等命令执行完成即可修复该问题) cd C:\WINDOWS\system32 for /f %s in (dir /b *.dll) do regsvr32 /s %s 命令行解释: 这行代码是一个Windows命令提示符(cmd)命令。它使用一…

JAVA集合ArrayList

目录 ArrayList概述 add(element) 用法 add(index, element)用法 remove(element)用法 remove(index)用法 get(index)用法 set(index,element) 练习 test1 定义一个集合,添加字符串,并进行遍历&…

Redis 与 MySQL 数据一致性问题

1. 什么是数据库与缓存一致性 数据一致性指的是: 缓存中存有数据,缓存的数据值 数据库中的值;缓存中没有该数据,数据库中的值 最新值。 反推缓存与数据库不一致: 缓存的数据值 ≠ 数据库中的值;缓存或…

HCIP-Datacom(H12-821)题库补充(4月12日)

最新 HCIP-Datacom(H12-821)完整题库请扫描上方二维码访问,持续更新中。 在BGP进程下,Aggregate命令中的detail_suppressed关键字的作用是以下哪一项? A:抑制生成的聚合路由下发IP路由表 B&…

2024-简单点-观察者模式

先看代码: # 导入未来模块以支持类型注解 from __future__ import annotations# 导入抽象基类模块和随机数生成器 from abc import ABC, abstractmethod from random import randrange# 导入列表类型注解 from typing import List# 定义观察者模式中的主体接口&…

R语言绘图:绘制横向柱状图

代码主要实现&#xff1a; 对数据进行排序&#xff0c;并且相同分组的数据会有相同的颜色。最后&#xff0c;绘制横向柱状图。 # 加载ggplot2包 library(ggplot2)# 示例数据&#xff0c;假设有三列&#xff1a;Group, Variable, Value data <- data.frame(Group factor(c(…

GGUF类型模型文件

在HuggingFace上&#xff0c;我们时不时就会看到GGUF后缀的模型文件&#xff0c;它是如何来的&#xff1f;有啥特点&#xff1f; https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF GGUF 由来 Georgi Gerganov&#xff08;https://github.com/ggerganov&#xff09;是著…

机器学习基础入门(一)(机器学习定义及分类)

机器学习定义 给予计算机无需特意带有目的性编程便有学习能力的算法 深度学习算法 主要有监督学习和非监督学习两类 监督学习&#xff08;supervised learning&#xff09; 定义 1、学习由x映射到y的映射关系 2、主动给予机器学习算法正确示例&#xff0c;算法通过示例来学习…

Springboot+Vue项目-基于Java+MySQL的旅游网站系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

政安晨:【Keras机器学习实践要点】(二十七)—— 使用感知器进行图像分类

目录 简介 设置 准备数据 配置超参数 使用数据增强 实施前馈网络&#xff08;FFN&#xff09; 将创建修补程序作为一个层 实施补丁编码层 建立感知器模型 变换器模块 感知器模型 编译、培训和评估模式 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍…

改写STM32标准库函数中的fputc

int fputc(int ch, FILE *f) {unsigned char temp[1] {ch};HAL_UART_Transmit(&huart1, temp, 1, 0xFFFF);return ch; // 或者返回 0&#xff0c;表示写入成功 }标准库中的 printf 函数在执行输出时会调用 fputc 函数&#xff0c;将字符一个个发送到输出流中。通过重写 fp…

redis-哨兵模式

一&#xff0c;哨兵的作用&#xff1a; 通过发送命令&#xff0c;让Redis服务器返回监控其运行状态&#xff0c;包括主服务器和从服务器。当哨兵监测到master宕机&#xff0c;会自动将slave切换成master&#xff0c;然后通过发布订阅模式通知其他的从服务器&#xff0c;修改配…

数仓维度建模

维度建模 数仓建模方法1. 范式建模法&#xff08;Third Normal Form&#xff0c;3NF&#xff09;2. 维度建模法&#xff08;Dimensional Modeling&#xff09;3. 实体建模法&#xff08;Entity Modeling&#xff09; 维度建模1. 事实表事实表种类事务事实表周期快照事实表累计快…

008Node.js模块、自定义模块和CommonJs

CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API&#xff0c;从而填补了这个空白。它的终极目标是提供一个类似Python&#xff0c;Ruby和Java标 准库。这样的话&#xff0c;开发者可以使用CommonJS API编写应用程序&#xff0c;然后这些应用可以运行在不同的…

强大的数据分析计算软件:Stata 15 for Mac 激活版

Stata 15 for Mac是一款高级统计分析软件&#xff0c;具有强大的数据管理和数据提取工具。以下是其功能和特点的详细介绍&#xff1a; 软件下载&#xff1a;Stata 15 for Mac 激活版版下载 数据管理&#xff1a;Stata 15 for Mac支持多种数据库、数据格式和计算机语言&#xff…

软件定义车队面临网络安全的曲折之路

当以色列 REE Automotive 设计其 P7 电动汽车底盘时&#xff0c;它是从软件开始工作的&#xff1a;扁平的车辆底盘完全可配置&#xff0c;每个轮胎附近有四个独立的模块&#xff0c;用于转向、制动、悬架和动力传动系统&#xff0c;每个模块均由电子驱动控制单元&#xff08;EC…

小程序地理位置权限申请+uniapp调用uni.getLocation

文章目录 一、小程序地理位置权限申请二、uniapp调用uni.getLocation 一、小程序地理位置权限申请 需要确保小程序类目已经填写 点击左侧导航栏找到最后的“设置”——“基本设置”——“前往填写” 在开发管理——接口设置——地理位置中可以看到&#xff1a; 即可点击想要申…

python与设计模式之工厂模式的那些事儿

一、工厂模式 工厂模式实现了按需创建的最佳模式&#xff0c;其目的是为了隐藏创建类的细节与过程&#xff0c;通过一个统一的接口来创建所需的对象。 话说没了皇位争夺权的皇三接到了一个外征的工作&#xff0c;始皇给了5个亿的经费让皇三组建一个军队。打权总是要进行武器采…

ClickHouse--16--普通函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、日期函数1、时间或日期截取函数&#xff08;返回非日期&#xff09;2、时间或日期截取函数&#xff08;返回日期&#xff09;3、日期或时间日期生成函数 二、类…