git入门教程+常用命令

news2024/12/23 0:46:40

Git入门教程

本文章主要参照视频教程:https://www.bilibili.com/video/BV1FE411P7B3/?spm_id_from=333.337.search-card.all.click&vd_source=06caf161b187fb3f4c039bc15e238fea

为什么要使用GIT

版本控制是项目、文档迭代的必然要求,所以需要使用git来进行版本控制
在这里插入图片描述

本地版本控制

在这里插入图片描述
记录文件更新,对不同版本文件做一个快照或是记录补丁,适合个人使用,例如RCS
在这里插入图片描述

集中版本控制

所有版本数据放在服务器上(CS架构),每个开发者从服务器上拉取最新版本或上传自己的修改
在这里插入图片描述
特点:

  1. 所有数据保存在单一的服务器上,容易受到服务器损坏影响
  2. 用户本地只有自己之前同步的版本,不联网看不到历史版本
  3. 代表性产品:SVN

分布式版本控制

特点:

  1. 所有版本信息仓库全部同步到每个用户本地
  2. 可以本地查看所有历史版本,可以离线本地提交
  3. 需要在联网时push到相应的服务器或其它用户处
  4. 增加了本地存储空间的占用
  5. 有保密安全隐患
  6. 代表性产品:Git
    在这里插入图片描述

SVN与Git

  1. SVN是集中式版本控制系统,Git是分布式版本控制系统
  2. 所以SVN的所有历史版本都在一个服务器上,而Git所有用户都有完整的历史记录
  3. SVN需要拉取远程版本,完成工作后上传到远程
  4. Git在工作时不需要联网,联网协同时进行code review即可

安装Git及环境配置

在这里插入图片描述

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

淘宝镜像地址:https://registry.npmmirror.com/binary.html?path=git-for-windows/

点击下载链接之后,将会跳到Downloading Git,根据自己电脑系统选择不同的位数进行下载,这里有两个版本区别如下:
Standalone Installer:安装版,安装完之后会自动在鼠标右键时显示 Git GUI Here 和 Git Bash Here (推荐)
Portable (“thumbdrive edition”):绿色版,解压就能运行,免安装,不过绿色版不会在鼠标右键时显示 Git GUI Here 和 Git Bash Here

剩余设置查看:https://blog.51cto.com/u_15756445/5592505
安装完成后在任意文件夹位置点击鼠标右键即可出现:
在这里插入图片描述

Git Bash:Unix与Linux风格的命令行,推荐

Git GUI :图形界面的Git 建议少使用 多熟悉命令行

后面都是直接用cmd了

Linux基本命令

cd xxxcd到某个目录
cd …回退到上一个目录
cd回到根目录
pwd显示当前路径
ls显示当前目录文件
ll显示当前目录文件(详细)
touch xx.xx新建文件
rm xx.xx删除文件
mkdir新建文件夹
rm -r xxx删除xxx文件夹
mv xxx.xx src xx将xxx文件移动到xx目录下
clear清屏
reset重新加载终端
history查看命令历史
help帮助
exit退出

Git的必要配置

查看配置

git config -l 当前的配置清单
在这里插入图片描述

git config - -system -l 查看系统配置
在这里插入图片描述

git config - -global -l 查看当前用户本地全局配置 (需要在git 文件夹里)

在这里插入图片描述
在这里插入图片描述
这些配置文件都保存在本地:

  1. Git\etc\gitconfig或Git\mingw64\etc\gitconfig Git安装目录下 是system系统配置
  2. C:\Users\微软账户.gitconfig或C:\Users\Administrator.gitconfig 适用于当前登录用户的配置 是global用户全局配置

都可以直接编辑

推荐使用everything来查找电脑文件 如下图

在这里插入图片描述

配置用户及邮箱(必要)

git config - -global user.name “xxx”

git config - -global user.email xxx

Git工作原理

Git工作区域

Git本地有三个区域——工作目录(Working Directory)、暂存目录(Stage(Index))、资源库(Reposit或Git Directory)

远程有一个区域——git仓库(Remote Directory)

在这里插入图片描述

  • 工作目录(Working Directory)、工作区(Workspace):平时存放项目代码的地方
  • Index/Stage:暂存区 临时存放修改
  • Repository:仓库区,是安全存放数据的位置,HEAD会指向最后存入仓库的版本
  • Remote:远程仓库,托管代码的服务器

工作目录构成:

  • Directory:使用Git管理的目录,也是一个仓库 包含我们的工作空间和Git的管理文件
  • Workspace:需要通过git管理版本的目录和文件
  • .git:存放Git管理信息的目录,初始化仓库时自动创建
  • Index/Stage:待提交区,在提交给repo之前所有的更新都在暂存区
  • Local Repo:本地仓库,存放在本地的版本库,HEAD是当前的开发分支

工作区存放文件 .git(隐藏文件夹)
在这里插入图片描述
在这里插入图片描述

打开.git文件夹可以看到HEAD 和Index

在这里插入图片描述

其中HEAD文件夹打开后是对最新的项目版本的引用

在这里插入图片描述

Git工作流程

  1. 在工作目录添加、修改文件
  2. 将需要版本管理的文件放入暂存区域(git add)
  3. 将暂存区域的文件提交到git仓库(git commit)

文件状态有三种:已修改(modified)、已暂存(staged)、已提交(committed )

Git实践

Git项目搭建

常用指令

在这里插入图片描述
常用六大指令如图

  1. 所有修改不一定全部都要提交,只选需要提交的(add)
  2. 提交(commit)
  3. 本地同步远程(push)
  4. 远程克隆本地(clone)
  5. 本地切换工作区(checkout)
  6. 远程直接同步工作区(pull)

本地仓库搭建

  1. 打开文件夹,右键 git bash here
  2. 初始化仓库
    1. git init 初始化仓库 生成.git文件夹
    2. git clone link 克隆远程仓库
      在这里插入图片描述

文件状态转换

文件的4种状态转换如下流程图:
在这里插入图片描述

文件状态转换实践

git status 查看所有文件状态 此时会显示当前目录下所有文件的状态

git status 文件名 查看指定文件状态

新创建的文件将会被分类为Untracked files
在这里插入图片描述

git add . 添加所有文件到暂存区

git add 文件名 添加指定文件到暂存区

添加之后文件变为staged
在这里插入图片描述

git commit -m “提交备注” 提交文件到本地仓库

git commit -m "commit message"

此时如果是从远程仓库克隆的,就会提示可以push到远程仓库
在这里插入图片描述

git push 指令将本地仓库与远程仓库同步

git push origin branch-name

origin是远程仓库的名称,branch-name是要推送到的远程分支的名称
在这里插入图片描述

忽略文件

对于一些不需要进行版本控制的文件可以进行忽略

在主目录下创建.gitignore文件,此文件有以下示例:

  1. 忽略空行和#开头的内容
  2. *.txt 忽略所有以txt结尾的文件
  3. !lib.txt 但lib.txt除外
  4. /temp 忽略目录下除了temp之外的文件夹
  5. build/ 忽略build目录下的所有文件
  6. doc/*.txt 忽略形如doc/notes.txt 但不包括doc/server/arch.txt

码云Gitee使用

码云注册

SSH公钥

  1. 进入C:\Users\微软用户名.ssh文件夹
  2. 右键此文件夹进入git bash
  3. 键入 ssh-keygen -t rsa (这里rsa是加密算法)
  4. 回车到生成完成
    在这里插入图片描述

这里id_rsa 是私钥 .pub是公钥

打开.pub文件,复制内容并粘贴到码云的公钥一栏

打开码云-头像-个人主页-SSH公钥

在这里插入图片描述

输入公钥并添加即可

在这里插入图片描述

新建仓库

在这里插入图片描述

也可以右上角导入GitHub的仓库
在这里插入图片描述

找到供克隆的链接 clone到本地即可
在这里插入图片描述

IDE集成Git的使用

Jetbrain IDEA: https://www.bilibili.com/video/BV1FE411P7B3?p=12&vd_source=06caf161b187fb3f4c039bc15e238fea

VSCode:https://code.visualstudio.com/docs/sourcecontrol/overview

在这里插入图片描述

打开非git管理的文件夹:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ctrl shift + p 输入clone可以克隆远程仓库

Git分支

Git控制下的项目往往会有许多不同的分支。代表主干、开发、新特性等等的分支
在这里插入图片描述

分支常用指令

git branch # 列出所有本地分支

git branch -r # 列出所有远程分支

git branch branchname  #新建一个分支,但依然停留在当前分支

git branch -b branchname #新建一个分支并且换到该分支

git merge branchname #合并指定分支到当前分支

git branch -d branchname #删除分支

git push origin --delete branchname # 删除远程分支
git branch -dr branchname #删除远程分支

分支合并时可能会产生冲突,需要修改冲突

一般分支标准

master/main分支作为主分支,应该用来发布新版本,需要特别稳定,一般情况下不允许在上面工作,工作一般是在dev分支上,dev代码分支稳定后合并到主分支上来。

进阶资源

Git大全:https://gitee.com/all-about-git

学习Git分支:https://oschina.gitee.io/learn-git-branching/

官方Git book:https://git-scm.com/book/en/v2

Git常用命令

仓库

# 在当前目录新建一个Git代码库
$ git init

# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]

# 下载一个项目和它的整个代码历史
$ git clone [url]

配置

# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

增加/删除文件

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

代码提交

# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

分支

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch]

# 新建一个分支,指向指定commit
$ git branch [branch] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 切换到上一个分支
$ git checkout -

# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

# 分支更名(不在要更名的分支上)
git branch -m 旧分支名 新分支名

标签

# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tag]

# 新建一个tag在指定commit
$ git tag [tag] [commit]

# 删除本地tag
$ git tag -d [tag]

# 删除远程tag
$ git push origin :refs/tags/[tagName]

# 查看tag信息
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

查看信息

# 显示有变更的文件
$ git status

# 显示当前分支的版本历史
$ git log

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 搜索提交历史,根据关键词
$ git log -S [keyword]

# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s

# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature

# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 显示指定文件相关的每一次diff
$ git log -p [file]

# 显示过去5次提交
$ git log -5 --pretty --oneline

# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn

# 显示指定文件是什么人在什么时间修改过
$ git blame [file]

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"

# 显示某次提交的元数据和内容变化
$ git show [commit]

# 显示某次提交发生变化的文件
$ git show --name-only [commit]

# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]

# 显示当前分支的最近几次提交
$ git reflog

远程同步

# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

# 删除远程仓库
git remote rm [name]

# 更改远程仓库地址
git remote set-url origin [url]

撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]

#暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

# 移除缓存
git rm -r --cached .

# 撤销commit
git reset HEAD^

其他

# 生成一个可供发布的压缩包
$ git archive

以上常用命令来自阮一峰老师的博客文章《常用 Git 命令清单》感谢阮老师!

实践常用命令

# 重命名文件
mv nameA(.xx) nameB(.xx)

# 移动文件
mv fileA dirA

  1. 无法链接Github

    在这里插入图片描述

    我这里的命令是git config --global http.proxy http://127.0.0.1:7890

  2. 文件超大小:this exceeds GitHub’s file size limit of 100.00 MB【本部分未完全解决】
    在这里插入图片描述

安装git lfs:

安装 Git Large File Storage - GitHub 文档

使用git lfs:

  • 使用 git lfs track 命令进行大文件追踪 例如git lfs track "*.png" 追踪所有后缀为png的文件
  • 使用 git lfs track 查看现有的文件追踪模式
  • 提交代码需要将gitattributes文件提交至仓库. 它保存了文件的追踪记录
  • 提交后运行git lfs ls-files 可以显示当前跟踪的文件列表
  • 将代码 push 到远程仓库后,LFS 跟踪的文件会以『Git LFS』的形式显示:
  • clone 时 使用’git clone’ 或 git lfs clone均可

配置 Git Large File Storage - GitHub 文档

  1. Github不同步contribution

解决:查看本地git的邮箱在不在github的设置里面

  1. 清除commit记录

BFG Repo-Cleaner

BFG Repo-Cleaner 的使用

git bfg 的使用(删除提交记录中的敏感信息,删除文件等)_Grassto的博客-CSDN博客

或者直接删掉.git和.gitignore文件重新初始化git

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

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

相关文章

traj_dist 笔记:Cython部分(cydist)

1 basic_euclidean.pyx 1.1 cimport 部分 from libc.math cimport sqrt from libc.math cimport fmin #使用 cimport 从 C 的标准库 libc 中导入数学函数 sqrt(平方根)和 fmin(两个浮点数的最小值)cimport numpy as np导入 NumP…

张正友相机标定法原理与实现

张正友相机标定法是张正友教授1998年提出的单平面棋盘格的相机标定方法。传统标定法的标定板是需要三维的,需要非常精确,这很难制作,而张正友教授提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可…

Qt开发 之 记一次安装 Qt5.12.12 安卓环境的失败案例

文章目录 1、安装Qt2、安卓开发的组合套件2.1、CSDN地址2.2、官网地址2.3、发现老方法不适用了 3、尝试用新方法解决3.1、先安装JDK,搞定JDK环境变量3.1.1、安装jdk3.1.2、确定jdk安装路径3.1.3、打开系统环境变量配置3.1.4、配置系统环境变量3.1.5、验证JDK环境变量…

白羽肉鸡养殖市场分析:2023年中国市场处于盈利状态

白羽肉鸡是我国养殖的主要快大型肉鸡品种,由于羽毛为白色,相较于本土黄羽肉鸡的羽毛颜色,基层常称其为白羽肉鸡。 隐性白羽鸡属于快大白羽肉鸡。是从白洛克(或白温多得)中选育而成。原产于法国。隐性白羽鸡在优质鸡配套上的应用对我国优质鸡产…

HCIA-H12-811题目解析(5)

1、【单选题】 以下关于Hybrid端口说法正确的有? 2、【单选题】使用命令"vlan batch 10 20"和"valn batch 10 to 20",分别能创建的vlan数量是?() 3、【单选题】二层ACL的编号范围是?…

女士内衣市场分析:预计2028年将达到643.08亿美元

内衣 (英文名:Underwear),是指贴身穿的衣物。内衣有保暖及污秽的危害作用,有时会被视为性征。女士内衣行业生产的主要原料是各类织布或无纺布,成分有海绵、边、定型纱、骨胶、肩带等,布面料在内衣企业的生产成本中所占比重较大。女…

泰裤辣!!!我又学到了监控服务器的各种方法!

好耶!又能学习到监控服务器的各种方法了。像是利用linux命令去监控的方法就有好几种哦 方法一:动态监控top命令 方法二:内存监控free -m 方法三:磁盘iostat -d 2 3 还有利用jmeter插件去监控服务器哦我们可以使用ServerAgent插件…

20、关联容器、无序容器

20、关联容器、无序容器 关联容器mapmultimapsetmultiset 无序容器哈希unordered_map 关联容器 map // map的使用 #include <iostream> #include <map> #include <stdexcept> using namespace std;class Student{ public:Student(const string& name&qu…

【设计模式--结构型--外观模式】

设计模式--结构型--外观模式 外观模式定义结构案例优缺点使用场景 外观模式 定义 又称门面模式&#xff0c;时一种通过多个复杂的子系统提供一个一致的接口&#xff0c;而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口&#xff0c;外部应用程序不用关心内部 子…

大数据机器学习算法项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现

大数据机器学习算法项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现 技术栈&#xff1a;大数据爬虫/机器学习学习算法/数据分析与挖掘/大数据可视化/Django框架/Mysql数据库 本项目基于 Django框架开发的房屋可视化分析推荐系统。这个系统结合了大数据…

手写VUE后台管理系统10 - 封装Axios实现异常统一处理

目录 前后端交互约定安装创建Axios实例拦截器封装请求方法业务异常处理 axios 是一个易用、简洁且高效的http库 axios 中文文档&#xff1a;http://www.axios-js.com/zh-cn/docs/ 前后端交互约定 在本项目中&#xff0c;前后端交互统一使用 application/json;charsetUTF-8 的请…

npm run build时提示vue/types/jsx.d.ts中的错误

解决方法一&#xff1a; 可能是因为vue版本过高引起的 我直接将package.json中vue以及vue-template-compiler的版本的前面^去掉&#xff0c;安装指定的版本 注意&#xff1a;vue和vue-template-compiler需要版本一致 参考链接&#xff1a;链接 解决方法二&#xff1a; 如果如…

JavaScript-Window对象

Window对象 BOM&#xff1a;浏览器对象模型 定时器-延时函数 JavaScript内置的一个用来让代码延迟执行的函数&#xff0c;setTimeout setTimeout(回调函数&#xff0c;等待的毫秒数);setTimeout仅仅只执行依次&#xff0c;所以可以理解为就是把一段代码延迟执行&#xff0c…

Pyhon基于YOLOV实现的车辆品牌及型号检测项目源码+模型+项目文档

项目运行运行录屏&#xff1a; Pyhon基于YOLOV实现的车辆品牌及型号检测项目运行录屏 完整代码下载地址&#xff1a;Pyhon基于YOLOV实现的车辆品牌及型号检测项目 项目背景&#xff1a; 车辆检测及型号识别广泛应用于物业&#xff0c;交通等的管理场景中。通过在停车场出入口…

Tomcat从认识安装到详细使用

文章目录 一.什么是Tomact?二.Tomcat的安装1.下载安装包2.一键下载3.打开Tomcat进行测试4.解决Tomcat中文服务器乱码 三.Tomcat基本使用1.启动与关闭Tomcat2.Tomcat部署项目与浏览器访问项目 四.Tomcat操作中的常见问题1.启动Tomcat后&#xff0c;启动窗口一闪而过&#xff1f…

phpstudy小皮(PHP集成环境)下载及使用

下载 https://www.xp.cn/download.html直接官网下载即可&#xff0c;下载完解压是个.exe程序&#xff0c;直接点击安装就可以&#xff0c;它会自动在D盘目录为D:\phpstudy_pro 使用 phpMyAdmin是集成的数据库可视化&#xff0c;这里需要下载一下&#xff0c;在软件管理-》网站程…

pycharm手动安装包

1.下载对应的包 TTS PyPI 2.手动解压&#xff0c;找到文件放到pycharm对应项目的lib文件夹中 以TTS包为例&#xff0c;找到下载并解压的包中的2个文件&#xff0c;一个名称一个info结尾 3.放到项目的lib文件夹中 eg&#xff1a;路径&#xff1b;C:\doc\myProject\speaker\venv…

笔记69:Conv1d 和 Conv2d 之间的区别

笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\4. Transformer 网络变体 a a a a a a a a a a a

12.11_黑马数据结构与算法笔记Java

目录 070 栈 链表实现 概念理清&#xff1a;什么时候是指针的指向&#xff0c;什么时候是元素本身&#xff1f; 071 栈 数组实现 072 栈 e01 有效的括号 072 栈 e02 后缀表达式求值 072 栈 e03 中缀表达式转后缀1 072 栈 e03 中缀表达式转后缀2 072 栈 e03 中缀表达式转…

大文件传输软件和传统软件的优缺点

在当前信息时代&#xff0c;文件和数据的传输已成为我们工作和生活中不可或缺的一环。无论是向同事发送报告还是与朋友分享电影&#xff0c;我们都需要依赖软件完成这些操作。然而&#xff0c;随着文件和数据容量的增大&#xff0c;传统的文件传输软件如FTP、HTTP、SMB、NFS等已…