Git的认识及基本操作
目录
一:Git的基本认识
二:Git的安装
三:Git的基本操作
1.创建本地仓库
2.配置Git
3.⼯作区、暂存区、版本库
4. 修改文件
5.版本回退
6.撤销修改
7.删除文件
一:Git的基本认识
1.实例引入
在日常当中我们常常会遇到这样的事,就是在做实验报告或者课设的时候,往往是一次性不能让老师满意的,需要我们反复的修改,如果有这样的情况,就是你的每次实验报告都是在上次的报告里直接修改的,没有对上次的实验报告进行保存,如果改到最后,老师让你拿前面写的实验报告的话,此时你肯定会拿不出来,因此为了防止这样的事情发生你需要保存每次修改的实验报告,但如果保存的次数多的话,对于每个版本都修改了什么,就会很容易导致不知道,对于项目中的代码也是如此
为了解决上述问题,就提出了版本控制器,用来记录每个版本的修改以及管理这些版本,而最主流的版本控制器就是Git
Git的再次认识:
Git是一个分布式版本控制系统,可以记录文件的修改历史,方便用户查看不同时间的版本
二:Git的安装
1.在Linux的centos下安装
查看在Linux下安装的Git版本: git --version
没有安装的话,就会显示找不到,安装有Git的话,就会显示对应的Git版本
卸载Git :sudo yum remove git -y
安装Git: sudo yum install git -y
2.在Linux的ubuntu下安装
查看安装的Git的版本: git --version
卸载Git : sudo apt-get remove git -y
安装Git : sudo apt-get install git -y
三:Git的基本操作
1.创建本地仓库
创建本地仓库的原因:经过上面的介绍,可以得知Git是一个版本控制器.如果想要对电脑/服务器上的文件进行一些记录,如修改的内容,版本迭代的详细内容时,就可以使用Git来追踪管理,但如果追踪或管理的文件在电脑/服务器的任意位置的话,Git是不能进行追踪管理的,要想追踪管理的话,就需要将文件放在Git的仓库当中,在仓库中的文件才能被Git追踪管理。即仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。
在一个文件目录下创建仓库的操作
创建⼀个Git本地仓库对应的命令: git init
[mjwl@hcss-ecs-889f ~]$ mkdir gitcode #创建目录
[mjwl@hcss-ecs-889f ~]$ cd gitcode
[mjwl@hcss-ecs-889f gitcode]$ git init #创建本地仓库
Initialized empty Git repository in /home/mjwl/gitcode/.git/[mjwl@hcss-ecs-889f gitcode]$ ls -la
total 12
drwxrwxr-x 3 mjwl mjwl 4096 Oct 15 23:22 .
drwx------ 15 mjwl mjwl 4096 Oct 15 23:22 ..
drwxrwxr-x 7 mjwl mjwl 4096 Oct 15 23:22 .git
[mjwl@hcss-ecs-889f gitcode]$ tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs├── heads└── tags
当前⽬录下多了⼀个 .git 的隐藏⽂件, .git ⽬录是Git来跟踪管理仓库的
2.配置Git
当安装Git后⾸先要做的事情是设置你的⽤⼾名称和e-mail地址,这是⾮常重要的,如果不配置的话,在后面对本地仓库进行操作时就会出现一系列的问题以及报错
配置指令
git config (--global) user.name "对应用户名"
git config (--global) user.email "用户名对应邮箱"
查看配置选项的指令
git config -l
删除对应的配置选项指令
git config (--global) --unset user.name
git config (--global) --unset user.email
对应的--global是⼀个可选项。如果使⽤了该选项,表⽰这台机器上所有的Git仓库都会使⽤这个
配置,若配置时带--global的话,删除时必须带--global
3.⼯作区、暂存区、版本库
引例:在对应的有.git的本地仓库目录下创建一个普通的文件
[mjwl@hcss-ecs-889f gitcode]$ touch readme
[mjwl@hcss-ecs-889f gitcode]$ ls -a
. .. .git readme
此时是否可以直接使用Git来管理readme文件,答案是不可以,需要经过add和commit两步
⼯作区:在电脑上要写代码或⽂件的⽬录,此处readme文件所在的gitcode目录成为工作区
暂存区:英⽂叫stage或index。⼀般存放在 .git ⽬录下的index⽂件(.git/index)中,我们
把暂存区有时也叫作索引(index)
版本库:⼜名仓库,⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽是Git的版本库。这个版本库⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”
三者之间的关系:
注:(1)在创建Git版本库时,Git会为我们⾃动创建⼀个唯⼀的master分⽀,以及指向master的⼀个指针叫HEAD
(2)通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到仓库中进⾏管理
1.git add 与git commit操作
添加⼀个或多个⽂件到暂存区: git add file1 (file2) (file3) ...
添加指定⽬录到暂存区,包括⼦⽬录: git add dir
添加当前⽬录下的所有⽂件改动到暂存区: git add .
提交暂存区全部内容到本地仓库中: git commit -m "日志"
提交暂存区的指定⽂件到仓库区: git commit (file1) (file2)... -m "日志'
查看历史提交记录: git log /git log --pretty=oneline
我们看到的⼀⼤串类似 23807c5...56eed6 的是每次提交的 commit id (版本号),Git的 commit id 不是1,2,3……递增的数字,⽽是⼀个SHA1计算出来的⼀个⾮常⼤的数字,⽤⼗六进制表⽰
2.查看.git文件
我们先来查看.git的目录结构
[mjwl@hcss-ecs-889f gitcode]$ tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs├── heads└── tags
在上述的readme文件中写入对应内容,通过git add和git commit操作将工作区的修改内容添加到本地仓库当中,再tree .git查看.git文件
[mjwl@hcss-ecs-889f gitcode]$ vim readme
[mjwl@hcss-ecs-889f gitcode]$ cat readme
hello git
[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "add file"
[master (root-commit) 989741d] add file1 file changed, 1 insertion(+)create mode 100644 readme
[mjwl@hcss-ecs-889f gitcode]$ tree .git
.git
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ └── heads
│ └── master
├── objects
│ ├── 6e
│ │ └── 84d6a5ed71a327ba3376cac9801558d9ea2e80
│ ├── 8d
│ │ └── 0e41234f24b6da002d962a26c2495ea16a425f
│ ├── 98
│ │ └── 9741d5c4d2f8a9ef91ad5343bc04eedcdb0288
│ ├── info
│ └── pack
└── refs├── heads│ └── master└── tags
1).index 就是我们的暂存区,add后的内容都是添加到这⾥的。
2). HEAD 就是我们的默认指向master分⽀的指针,我们可以查看一下
[mjwl@hcss-ecs-889f gitcode]$ cat .git/HEAD
ref: refs/heads/master
那么上述HEAD指针指向的master中保存的是什么呢?
[mjwl@hcss-ecs-889f gitcode]$ cat .git/refs/heads/master
989741d5c4d2f8a9ef91ad5343bc04eedcdb0288
保存的就是当前最新的 commit id ,此时我们此时来打印日志来确认的
[mjwl@hcss-ecs-889f gitcode]$ git log
commit 989741d5c4d2f8a9ef91ad5343bc04eedcdb0288
Author: mjw <2090493145@qq.com>
Date: Wed Oct 16 19:07:56 2024 +0800add file
而一个commit id也可以看作一个git对象 ,我们可以来打印一下这个git对象中的内容
[mjwl@hcss-ecs-889f gitcode]$ git cat-file -p 989741d5c4d2f8a9ef91ad5343bc04eedcdb0288
tree 6e84d6a5ed71a327ba3376cac9801558d9ea2e80
author mjw <2090493145@qq.com> 1729076876 +0800
committer mjw <2090493145@qq.com> 1729076876 +0800add file
其中的parent后面的commit id是上次提交的commit id
对于打印的第一行还有个commit id,我们使用相同的方法进行查看得
[mjwl@hcss-ecs-889f gitcode]$ git cat-file -p 6e84d6a5ed71a327ba3376cac9801558d9ea2e80
100644 blob 8d0e41234f24b6da002d962a26c2495ea16a425f readme//对readme文件对应的commit id进行查看得
[mjwl@hcss-ecs-889f gitcode]$ git cat-file -p 8d0e41234f24b6da002d962a26c2495ea16a425f
hello git //这就是对readme文件的修改,在这里都被git保存了下来
每个提交的文件都对应一个commit id,commit id也是可以作为一种索引的,可以使用 git cat-file -p来查看这个索引所对应git对象中的内容,这个git对象也是被维护在对象库当中的,里面包含的是修改的内容
3).objects为Git的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的
对象中,就位于".git/objects"⽬录下 ,我们可以查看得
[mjwl@hcss-ecs-889f gitcode]$ ls .git/objects/
6e 8d 98 info pack
查找object时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称
总结在本地仓库中的几个特殊文件/目录
index:暂存区, git add 后会更新该内容。
• HEAD:默认指向master分⽀的⼀个指针。
• refs/heads/master:⽂件⾥保存当前 master 分⽀的最新 commit id 。
• objects:包含了创建的各种版本库对象及内容,可以简单理解为放了git维护的所有修改
3).对添加文件的再次理解
[mjwl@hcss-ecs-889f gitcode]$ touch file1
[mjwl@hcss-ecs-889f gitcode]$ git add file1
[mjwl@hcss-ecs-889f gitcode]$ touch file2
[mjwl@hcss-ecs-889f gitcode]$ git commit -m "add file"
[master bce0eaf] add file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 file1
这里是新增两个文件,但改变的只有一个文件,这是因为 git add 是将⽂件添加到暂存区, git commit 是将暂存区的内容添加到本地仓库中 ,但我们没有进行git add file2,因此file2文件不被暂存区所维护的。所要解决的话,就是再执行git add file2 和git commit 操作
4. 修改文件
在这里我们可以在readme文件中新增一行,新增后我们该如何查看当前仓库的状态呢?
git status 命令⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改
git diff [file] 命令⽤来显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff格
式。也可以使⽤ git diff HEAD -- [file] 命令来查看版本库和⼯作区⽂件的区别
当使用git diff命令后就可以查看到文件具体哪些地方做了修改,然后在进行git add和git commit操作提交到master分支下被Git追踪管理
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# file2
no changes added to commit (use "git add" and/or "git commit -a")[mjwl@hcss-ecs-889f gitcode]$ git add .
[mjwl@hcss-ecs-889f gitcode]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: file2
# modified: readme
#
git add 之后,就没有看到上⾯ no changes added to commit (use "git add"and/or "git commit -a") 的消息了。接下来让我们继续? git commit 即可
5.版本回退
Git是一个版本控制器,是可以管理文件的历史版本的,如果有需要是可以回退到以前的版本的,对应命令为 git reset,可以指定回退到某个提交的版本,接下来介绍具体的语法与用法
git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]
HEAD 说明:
◦ 可直接写成commit id,表⽰指定退回的版本
◦ HEAD 表⽰当前版本
◦ HEAD^ 上⼀个版本
◦ HEAD^^ 上上⼀个版本
◦ 以此类推...
可以使⽤ 〜数字表⽰:
◦ HEAD~0 表⽰当前版本
◦ HEAD~1 上⼀个版本
◦ HEAD^2 上上⼀个版本
◦ 以此类推...
对于上述的readme文件,第一版只有hello git,第二版(当前版本)是有hello git 和hello world,我们以此为例
实例二:
这时就不能根据commit id 进行回退了,因此我们可以采用git reflog来查询commit id进行回退,reflog是用来记录本地每次提交的命令
Git的版本回退速度⾮常快,因为Git在内部有个指向当前分⽀(此处是master)的HEAD指针, refs/heads/master ⽂件⾥保存当前 master 分⽀的最新 commit id 。当我们在回退版本的时候,Git仅仅是给refs/heads/master 中存储⼀个特定的version ,可以理解为以下的图
6.撤销修改
当我们不想操作当前版本,想直接回退到上个版本开始操作
对于撤销回退是分为三种情况的
情况⼀:对于⼯作区的代码,还没有 add
情况⼆:已经 add ,但没有 commit
情况三:已经 add ,并且也 commit 了(还没有进行push操作)
在这里在readme文件中添加一行xxx code的内容,具体这三种情况的解决方法为
git checkout -- [file] 命令让⼯作区的⽂件回到最近⼀次 add 或 commit 时的状态
7.删除文件
因为删除也是对文件的修改,所以删除文件有两种方式
1.使用rm命令删除文件,还需要 git add和git commit操作
2.使用git rm命令删除文件,再进行git commit操作
相关文章:

Git的认识及基本操作
目录 一:Git的基本认识 二:Git的安装 三:Git的基本操作 1.创建本地仓库 2.配置Git 3.⼯作区、暂存区、版本库 4. 修改文件 5.版本回退 6.撤销修改 7.删除文件 一:Git的基本认识 1.实例引入 在日常当中我们常常会遇到这样的事,就是在做实验报告或者课设…...

python 日志库loguru
python 日志库loguru 安装 pip install loguru最简单的基本使用 from loguru import loggerlogger.success("Hello from success!") logger.info("Hello from info!") logger.debug("Hello from debug!") logger.warning("Hello from wa…...

基于SpringBoot+Vue+uniapp的在线招聘平台的详细设计和实现
详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…...

Chrome谷歌浏览器加载ActiveX控件之JT2Go控件
背景 JT2Go是一款西门子公司出品的三维图形轻量化预览解决工具,包含精确3D测量、基本3D剖面、PMI显示和改进的选项过滤器等强大的功能。JT2Go控件是一个标准的ActiveX控件,曾经主要在IE浏览器使用,由于微软禁用IE浏览器,导致JT2Go…...

Java基础概览和常用知识(七)
什么是自动装箱和自动拆箱,原理是什么? 自动装箱和自动拆箱是Java编程语言中的两个重要概念,它们涉及到基本数据类型与其对应包装类之间的自动转换。 一、定义 自动装箱:是指Java编译器在需要将基本数据类型转换为对应的包装类…...

STL-string
STL的六大组件: string // string constructor #include <iostream> #include <string> using namespace std; int main() {// 构造std::string s0("Initial string");std::string s1; //nullptrstd::string s2("A character sequenc…...

数据库基础-学习版
目录 数据库巡检清理表空间高水位处理重建索引扩展字段异常恢复处置常见命令汇总 数据库巡检 数据库巡检的主要目的是确保数据库的健康状态、性能和安全,及时发现潜在的问题。 一 数据库状态检查 查看数据库列表:SHOW DATABASES; 检查当前数据库SELECT DATABASE(); 检查数据…...

【Gin】Gin框架介绍和使用
一、简单使用Gin框架搭建一个服务器 package mainimport ("github.com/gin-gonic/gin" )func main() {// 创建一个默认的路由引擎r : gin.Default()// GET 请求方法r.GET("/hello", func(c *gin.Context) {// c.JSON 返回的是JSON格式的数据c.JSON(200, g…...

AI大模型带来哪些创业机遇?
AI 大模型的快速发展带来了许多创新和创业机遇,涵盖了从行业应用到基础设施优化的方方面面。以下是一些具体的创业机会: 1、垂直行业应用 大模型可以根据不同行业的需求进行定制和优化,提供高度专业化的 AI 解决方案。 医疗领域:…...

[Linux] 层层深入理解文件系统——(3)磁盘组织存储的文件
标题:[Linux] 层层深入理解文件系统——(3)磁盘组织组织存储的文件 个人主页水墨不写bug 目录 一、磁盘中的文件 1)磁盘的物理结构 2)磁盘的CHS寻址法 3)磁盘的空间管理 二、磁盘如何组织存储文件 三…...

Apache Cordova学习计划
Apache Cordova(之前称为 PhoneGap): 1. PhoneGap的起源:2008年8月,PhoneGap在旧金山的iPhoneDevCamp上首次亮相,由Nitobe公司开发,目的是“为跨越Web技术和iPhone之间的鸿沟牵线搭桥”。 2. Ph…...

Unity学习日志-API
Untiy基本API 角度旋转自转相对于某一个轴 转多少度相对于某一个点转练习 角度 this.transform.rotation(四元数)界面上的xyz(相对于世界坐标) this.transform.eulerAngles;相对于父对象 this.transform.localEulerAngles;设置角度和设置位置一样,不能单独设置xz…...

Java基础常见面试题总结(上)
基础概念与常识 Java 语言有哪些特点? 简单易学(语法简单,上手容易);面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现平台无关性)&…...

4 -《本地部署开源大模型》在Ubuntu 22.04系统下部署运行ChatGLM3-6B模型
在Ubuntu 22.04系统下部署运行ChatGLM3-6B模型 大模型部署整体来看并不复杂,且官方一般都会提供标准的模型部署流程,但很多人在部署过程中会遇到各种各样的问题,很难成功部署,主要是因为这个过程会涉及非常多依赖库的安装和更新及…...

本地如何使用Pycharm连接远程服务器调试torchrun
pycharm 远程连接服务器并且debug, 支持torch.distributed.launch debug_pycharm远程debug-CSDN博客 上面这个博客写的真的非常好,记录一下,需要注意该博主的主机为mac 本人可调试版本为: 可直接运行版本为:...

Visual Studio 2022常用快捷键
1. 基本编辑快捷键 Ctrl X:剪切选中内容Ctrl C:复制选中内容Ctrl V:粘贴内容Ctrl Z:撤销Ctrl Y:重做Ctrl Shift L:删除当前行Ctrl K, Ctrl C:注释选中的代码Ctrl K, Ctrl U…...

mysql innodb 引擎如何直接复制数据库文件?
mysql innodb 引擎如何直接复制数据库文件?介绍如下: 1、首先找到数据库文件所在位置 一般可以看my.conf/my.ini配置的文件的“datadir” 看示例: “MAMP”在Macos下的数据库文件位置: /Library/Application Support/appsolu…...

python中的global和nonlocal关键字以及闭包和模块
global i 这样的用法在于 Python 中,但需要在一个函数内部使用,以便将变量 i 声明为全局变量。让我们来详细讲解一下它的用法。 什么是全局变量? 全局变量是指在函数外部定义的变量,可以在任何函数中访问和修改。如果你需要在函数…...

LabVIEW风机滚动轴承监测系统
矿井主通风机作为矿井中最重要的通风设备,一旦出现故障,不仅会影响矿井内的空气质量,还可能引发安全事故。研究表明,通风机中约30%的故障是由轴承问题引起的。因此,能够实时监控矿井主通风机轴承状态的系统,…...

第1节 什么是鸿蒙系统
鸿蒙系统(HarmonyOS)是华为公司发布的一款基于微内核的面向全场景的分布式操作系统。以下是对它的具体介绍: 1. 核心特点: • 分布式能力:这是鸿蒙系统的核心优势之一。它能够将多种不同类型的智能终端设备连接起来&a…...

CentOS 7 将 YUM 源更改为国内镜像源
在 CentOS 7 中,将 YUM 源更改为国内的阿里云镜像源可以提高软件包的下载速度。以下是具体的步骤: 1. 备份原有 YUM 源配置 首先,建议你备份当前的 YUM 源配置,以防后续需要恢复: sudo cp -r /etc/yum.repos.d /etc…...

python调用dircmp进行文件夹比较
不同电脑上的同一部署文件,由于更新频率不相同导致两边内容有差异,需要比较两边的文件夹及文件差异。之前写过批量修改文件名的Python代码,因此优先想用python处理。 百度“python 文件夹对比”,不少文章都是自己实现的文件夹…...

微信小程序 - 供应链系统设计
文章目录 一、系统概述二、系统架构设计三、系统安全设计四、系统性能优化五、系统部署与维护 在当今数字化时代,供应链管理对于企业的高效运营至关重要。微信小程序作为一种便捷的移动应用形式,为供应链系统的开发提供了新的机遇。本文将从系统架构设计…...

嵌入式学习-IO进程-Day03
嵌入式学习-IO进程-Day03 IO进程 获取文件属性(stat) 库 库的概念 库的分类 静态库的制作 动态库的制作 进程 进程和程序的区别 进程的特点 进程三段 进程的类型 进程的运行状态 进程状态转换图(重点) 进程的函数接口 创建进程for…...

docker安装elasticsearch和ik分词器
目录 ElasticSearch 了解ElasticSearch ELK技术栈 编辑 ElasticSearch与lucene的关系 总结 倒排索引 正向索引 倒排索引 正向和倒排 elasticSearch特定的一些概念 文档和字段 索引和映射 mysql与elasticsearch对比 安装elasticSeacher并部署单例es 创建网络 加…...

|智能门票|008_django基于Python的智能门票设计与实现2024_i16z2v70
目录 系统展示 设计步骤 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…...

QFramework v1.0 使用指南 更新篇:20240919. 新增 BindableDictionary
增加了三个比较常用的屏幕过渡:FadeIn,FadeOut,FadeInOut。 示例代码如下: using UnityEngine;namespace QFramework.Example {public class ScreenTransitionsExample : MonoBehaviour{private void OnGUI(){IMGUIHelper.SetDesignResolut…...

vue实现文件预览和文件上传、下载、预览——多图、模型、dwg图纸、文档(word、excel、ppt、pdf)
整体思路(模型特殊不考虑,别人封装不具备参考性) 图片上传采用单独的组件,其他三种类型采用一个上传组件(仅仅文件格式不同)文件上传采用前端直接上传阿里云的方式图片预览使用elementUI自带的image预览dw…...

探讨人工智能领域所需学习的高等数学知识及其应用场景,涵盖了微积分、线性代数、概率论等多个数学分支。
大家好,我是微学AI,今天给大家介绍一下本文主要探讨了人工智能领域所需学习的高等数学知识及其应用场景。文章详细列出了人工智能中涉及的数学公式,涵盖了微积分、线性代数、概率论等多个数学分支。同时,本文深入介绍了这些数学知…...

详解安卓和IOS的唤起APP的机制,包括第三方平台的唤起方法比如微信
网页唤起APP是一种常见的跨平台交互方式,它允许用户从网页直接跳转到移动应用程序。 这种技术广泛应用于各种场景,比如让用户在浏览器中点击链接后直接打开某个应用,或者从网页引导用户下载安装应用。实现这一功能主要依赖于URL Scheme、Univ…...