一文快速了解分布式版本控制系统Git_软件版本控制系统的运行结果图-程序员宅基地

技术标签: github  Git  git  

身为一名程序员,我们除了自己单人开发项目,更多的情况需要多人协同开发。如果你使用硬盘拷贝或者发送压缩包之类的方式(虽然我们公司常用),那肯定是不如 版本控制系统 来的安全与高效。不考虑硬盘丢失或文件损坏等意外情况,拷贝的代码合并就很令人头疼,本文就来带大家快速上手 分布式版本控制系统Git

1 版本控制系统的分类

1.1 集中式

集中式版本控制系统的版本库是集中存放在“中央服务器”的,所有操作都需要联网,局域网或互联网。比如你修改了某个bug,但是你的电脑无法联网或者“中央服务器”宕机了,此时你就无法提交到“中央服务器”,就会影响到你 版本管理 。代表工具:SVN

1.2 分布式

分布式版本控制是没有“中央服务器”的,每一台电脑都有完整的版本库,你可以在本地分支上提交代码、合并分支、解决冲突等操作。多人协作时只需要把各自的修改推送给对方,就能看到对方的操作记录了。代表工具:Git

2 Git的介绍

Git是一个 开源的分布式版本控制系统 ,可以有效、高速地处理从很小到非常大的项目版本管理。也是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。先看下面的示意图:
在这里插入图片描述
Git有本地仓库和远程仓库,它们俩都有完整的版本库,远程仓库的作用是方便开发人员之间代码的推送与拉取。

3 Git工作流程图

在这里插入图片描述
Git命令:

  1. clone(克隆):从远程仓库中克隆代码到本地仓库
  2. checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加):在提交前先将代码保存到暂存区
  4. commit(提交):提交到本地仓库
  5. fetch(抓取):从远程仓库更新版本库到本地仓库,不进行合并
  6. pull(拉取):从远程仓库更新版本库到本地仓库,并自动进行合并
  7. push(推送):将本地仓库的修改内容推送到远程仓库

4 Git的安装与配置

4.1 Git下载与安装

官网:Git官网
在这里插入图片描述
当前最新版是2.37.3,下载后运行程序,全部默认即可。安装完成后,在桌面或任何文件夹内右键,出现下面两个则表示成功:
在这里插入图片描述

Git GUI:Git提供的图形界面工具

在这里插入图片描述

Git Bash:Git提供的命令行工具

在这里插入图片描述

本文只介绍 Git Bash 中的命令,了解了命令后界面工具也很容易上手。

4.2 Git基础配置

安装完成后首先 必须 要设置用户信息,因为Git每次提交版本时都会使用该用户

  1. 打开Git Bash
  2. 设置用户信息(邮箱可以不是真实邮箱)
git config --global user.name '你的用户名'
git config --global user.email '你的邮箱'
  1. 查看配置信息
git config --global user.name
git config --global user.email

5 Git本地仓库常用命令

5.1 基础命令

5.1.1 初始化本地仓库

命令形式:

git init

新建一个文件夹 git_test ,进入目录后打开 Git Bash ,输入上述命令,出现以下内容则表示初始化成功
在这里插入图片描述
此时在目录中会生成一个隐藏的 .git 文件夹,里面就是你的版本库信息,含 .git 文件夹的目录称为 工作目录
在这里插入图片描述

5.1.2 查看仓库状态

在工作目录中所有文件都有状态,新建文件是未跟踪(untracked),修改已有文件是未暂存(unstaged),添加到暂存区是已暂存(staged),提交到仓库是已提交(committed)。

命令形式:

git status

输入以上命令,可以查看仓库当前状态
在这里插入图片描述
命令行提示说:在master分支上没有任何内容可以提交(创建或复制文件,然后使用“git add”命令来跟踪)

5.1.3 添加到暂存区

命令形式:

git add 文件名|通配符

上述命令可以将工作区一个或多个文件添加到暂存区

添加单个文件:git add 文件名或目录名
添加所有修改的文件:git add .

举例说明:
在我们的工作目录 git_test 中新建一个txt文件叫file01(可以鼠标右键新建,也可以使用命令 touch file01.txt ),此时再执行 git status 命令会得到另一种提示:
在这里插入图片描述
命令行提示说:file01.txt是未被跟踪的文件,使用“git add 文件名”来包含要提交的内容 。
那我们这里就执行 git add file01.txt 命令,然后再执行 git status 命令,可以发现它的状态发生了改变:
在这里插入图片描述
命令行提示:file01.txt文件等待提交,使用“git rm --cached ” 可以退回未暂存状态。

上面的操作是新增一个文件,如果修改已提交的文件,则会更改状态为未暂存(unstaged)。假设你已完成 5.1.4 提交到仓库 的操作,然后修改 file01.txt 内容,添加 count=1,然后再执行 git status 命令:
在这里插入图片描述
命令行提示:你的修改还没有暂存,不能提交!可以使用"git add "来更新要提交的内容,或者使用“git restore ”来丢弃工作目录中的更改。
那我们这里可以执行 git add file01.txt 或者 git add . 命令,然后再执行 git status 命令,可以发现它的状态发生了改变:
在这里插入图片描述
可以看到修改后的 file01.txt 文件被成功添加

5.1.4 提交到本地仓库

命令形式:

git commit[ -m "注释内容"]

通过该命令可以将已暂存的文件提交到本地仓库,[] 中的部分表示可选,推荐必填。因为 注释内容 本身是必须的,如果在此处不填,下一步会打开其他编辑器(比如vim编辑器或其他)让你填写。
在这里插入图片描述
此时再执行 git status 查看状态
在这里插入图片描述
可以看到已经成功提交了,之前的 No commits yet 也消失了。注意:提交步骤需要先添加到暂存区再提交,下文说的提交到仓库指的这连续两步。

5.1.5 查看日志

命令形式:

git log[option]

选项:

  • –all 显示所有分支
  • –oneline 将提交信息显示为一行
  • –graph 以图的形式显示

通过该命令可以查看仓库的所以操作记录
在这里插入图片描述
此处 commit 后面的一长串字符串是版本号(commitID),后面括号内的 HEAD 表示 当前所在分支,这里的意思是当前分支是master分支。Author表示作者,Date则表示提交时间,add file01就是我们填写的 提交信息

我们可以把上面几个常用选项全部加上,同时输出不加选项的日志进行比较:
在这里插入图片描述

commitID缩短了,用户信息和日期被省略了,只留下了关键的分支和注释,这样我们看日志会更加清楚明了。同时,缩略的commitID使用时效果是一样的,因为它是唯一的。

5.1.6 版本重置

命令形式:

git reset --hard commitID

比如上面已经提交过两次,第一次新建file01文件,第二次在file01文件修改内容,所以有两次提交记录,执行上述命令后当前版本就会重置到第一次提交记录上
在这里插入图片描述
此时你在日志中已经查看不到第二次提交的记录了,那我们是否可以通过本条命令重置当前版本到第二次提交记录上?答案是可以的,我们可以通过上面第二次提交的commitID来执行命令。
在这里插入图片描述
可以看到日志中又出现了第二次提交的记录,但是如果我们清除了命令行工具的内容拿不到commitID,那还能重置回去吗?答案是可以的,这里需要使用另一条命令: git reflog 。这条命令可以理解为 显示所有引用日志,它可以查看所有的版本操作记录,包含提交与重置,而 git log 只显示当前版本(HEAD指针)及其之前的版本信息。
在这里插入图片描述
这里我们对比一下两条命令的输出,在 git log 下面只有两次的提交记录,而在 git reflog 下面有四条记录,从上到下是最新到最旧的记录,分别是:1. 重置到第二次提交,2. 重置到第一次提交,3. 提交更新文件file01.txt,4. 提交新建文件file01.txt。所以我们可以在这拿到想要的commitID。

5.1.7 忽略列表

我们新增了一个 file02.txt 文件,但是我们不想提交它,同时又希望使用 git add . 来一键全部提交,此时可以新建一个 .gitignore 文件,在里面写上 file02.txt 保存,下面我在保存前后分别执行 git status 查看了文件的状态
在这里插入图片描述
可以看到保存前未跟踪的文件里包含 file02.txt 文件,保存后则被忽略了。

5.1.8 为常用命令配置别名

有些命令加上选项会很长,但是又经常使用,比如 git log --oneline --graph ,此时我们可以给它配置别名。

  1. 打开用户目录,创建 .bashrc 文件
    打开【C盘】-【用户】,我这里用户目录是【Administrator】,打开目录后新建.bashrc 文件。部分windows系统不支持创建点开头的文件,可以打开 Git Bash 执行 touch ~/.bashrc
  2. .bashrc 文件中输入以下内容
alias git-log='git log --all --oneline --graph'

这样别名就设置成功了,我们可以执行 git-log 试试效果
在这里插入图片描述
发现确实和执行 git log --oneline --graph 是一样的,注意,.bashrc 的内容修改后 Git Bash 需要重启才会生效。

5.2 分支命令

顾名思义,分支就是从主体上分出去的一部分。分支可以把开发环境和生产环境分离开来,避免开发影响到生产环境。最常用的分支有两个:master(生产)分支dev(开发)分支。其他更细致的分支可以自行百度,这里举个例子, 比如leader让你开发一个新功能,应该在dev分支上创建一个新的分支feature/xxx,等到功能完成并且测试通过后先合并到dev分支上,然后leader审核通过后再合并到master分支上,这样可以在开发新功能的同时保证生产环境的稳定与安全。

5.2.1 查看本地分支

命令形式:

git branch

在这里插入图片描述
初始化仓库时默认创建 master 分支,可以看到当前只有 master分支,并且 当前所在分支 就是 master分支(颜色标绿且前面带有星号)

5.2.2 创建本地分支

命令形式:

git branch 分支名

在这里插入图片描述
可以看到已经成功创建了 dev分支,但是 当前所在分支 还是 master分支

5.2.3 切换分支

命令形式:

git checkout[ -b] 分支名

不加参数 -b 只能切换已创建的分支,添加参数 -b 可以在分支不存在时创建并切换。
在这里插入图片描述

5.2.4 合并分支

一个分支上的提交可以合并到另一个分支。比如前面提到的,master作为 生产分支,我们新增功能模块是不该在上面开发的,可以新建一个dev分支,开发完成后再合并到master分支。
命令形式:

git merge 分支名

举例说明:继续使用前面的例子,我们切换到 dev分支然后创建一个file03.txt文件,按顺序执行 git add .git commit -m 'add file03'git-log
在这里插入图片描述
此时可以看到最新的版本记录,分支是dev(HEAD指针指向的就是当前分支),注释内容是 add file03,正是我们刚刚提交的。然后切换回master分支
在这里插入图片描述
可以看到master分支的版本记录只到 update count=1 这一步,这时我们想把 dev分支 的改动合并到 master分支 上来,就可以执行 git merge dev。注意,我们要合并到master分支那就要切换到master分支,不能在dev分支上执行,那就没有效果了。
在这里插入图片描述
可以看到,dev分支上的改动已经成功合并到master分支上。

5.2.5 删除分支

命令形式:

git branch -d 分支名 // 通常情况使用
git branch -D 分支名 // 强制删除,在被删除分支比当前分支的版本更新时使用,比如dev比master多了一次提交,想要删除dev就必须使用该命令

5.2.6 解决冲突

当我们在两个分支上改动同一个文件,就会产生冲突。比如上面的例子,masterdev都有file01.txt文件,内容都是 count=1,我们切换到dev分支,把内容改为 count=2 然后提交,再切换到master分支,把内容改为 count=3 然后提交,然后我们把dev合并到master上,
在这里插入图片描述
此时命令行提示:自动合并file01.txt失败,需要解决冲突然后提交结果。我们可以使用记事本打开file01.txt:
在这里插入图片描述
两条分支都修改了同一个文件的同一行,合并时Git不知如何取舍,所以干脆交给执行合并命令的人处理。从HEAD到虚线的是当前分支的内容,从虚线到dev的就是dev分支的内容。解决冲突很简单也很暴力,那就是留下你需要提交的内容,比如这里我要留下 count=3 那就删掉其他内容,
在这里插入图片描述
然后再重新提交一遍就行了

6 Git远程仓库

前面我们讲的都是本地仓库的操作命令,只有将远程仓库关联进来才是完整的Git工作流程。那么我们如何搭建Git远程仓库呢?其实可以通过互联网上提供的一些代码托管服务来实现,比如Github,码云(Gitee)等等。Github因为某些原因需要科学上网,我们这边就选择码云。

6.1 注册码云账号

码云是国内的一个代码托管平台,想要使用它的服务自然要先注册账号,注册流程直接略过。

6.2 创建远程仓库

在码云右上角有个加号,展开后点击【新建仓库】
在这里插入图片描述
然后填写仓库名称,系统会自动填充路径
在这里插入图片描述
其他都可以不用改动,然后立即创建
在这里插入图片描述
创建后的样子如上图所示

6.3 配置SSH公钥

现在远程仓库已经创建好了,我们想要把本地仓库推送到远程仓库,远程仓库需要验证我们的身份,有两种方式,一种是输入Git的账号和密码,一种是SSH公钥,推荐使用第二种。

首先打开 Git Bash 执行以下命令来生成公钥:

ssh-keygen -t rsa

然后一直回车即可,如果公钥已经存在,则会自动覆盖。已经生成过的公钥,可以执行以下命令来查看:

cat ~/.ssh/id_rsa.pub

在这里插入图片描述
这样我们就拿到需要的公钥了,然后要把它填到哪呢?打开码云,展开右上角头像菜单
在这里插入图片描述
根据上图点击【设置】,然后左侧菜单栏点击【SSH公钥】,把拿到的公钥填到公钥一栏里
在这里插入图片描述
标题一栏有时会自动填充,你也可以随便改,点击确定就添加成功了。那么如何验证公钥生效了呢?打开 Git Bash 执行 ssh -T [email protected] ,出现以下内容则表示成功
在这里插入图片描述
注意:如果你是第一次访问它,会询问你是否继续访问,这里输入 yes 然后回车,然后就能看到上图的内容了。

6.4 操作远程仓库

6.4.1 添加远程仓库

命令形式:

git remote add 远端名称 仓库路径
  • 远端名称,默认是origin
  • 仓库路径,从远端服务器获取

我们打开码云上新建的仓库,从上面获取仓库的SSH地址
在这里插入图片描述
然后就能在 Git Bash 中执行命令
在这里插入图片描述

6.4.2 查看远程仓库

命令形式:

git remote

在这里插入图片描述

6.4.3 推送到远程仓库

命令形式:

git push[ -u][ <远程主机名> <本地分支名>[:<远程分支名>]]

如果直接执行 git push,会提示当前分支和远程分支没有关联,需要我们推送当前分支并绑定关联。
在这里插入图片描述

方法有两种,第一种是:

git push origin master

origin是通用的远程主机名,本地分支名和远程分支名相同时可省略,所以可以只有一个master。这种写法有一个弊端,就是每次都要写全。第二种方法是:

git push -u origin master

参数 -u--set-upstream 的缩写,作用是将当前本地分支(即master)和远程分支(也叫master)建立关联,之后的推送可以直接执行 git push
在这里插入图片描述
此时就成功推送到了远程仓库,并且创建了master分支,origin/master 就是远程分支。我们打开码云上的仓库,可以看到文件全都推送成功了,历史提交的版本也都能查看。
在这里插入图片描述
我们也可以执行 git branch -vv 来查看本地分支和远程分支的关联关系,下图看到 master 后面跟着 origin/master 就说明关联成功了。
在这里插入图片描述

其他git push 命令除了 -u 还有其他参数,此处不做展开,有兴趣的可以执行 git push -h 查看自行研究。
在这里插入图片描述

回滚远程仓库git push 到远程仓库,正常推送会被拒绝,需要使用强制命令 git push -f 到远程仓库,完成回滚。

6.4.4 从远程仓库克隆

我们已经成功将本地仓库推送到远程仓库,假如我们的同事要协同开发,他就可以从远程仓库进行克隆。
命令形式:

git clone[ 远程仓库路径][ 本地目录名称]

远程仓库路径就是仓库的url,可以使SSH或其他,如下图
在这里插入图片描述
在这里插入图片描述
这样就成功克隆了仓库。
本地目录名称作用是修改本地项目名称,如果不加,本地项目的目录名称就是远程仓库的名称。比如上面,远程仓库名是 git_testCloning into 'git_test' 就表示在当前目录下创建了一个 git_test 目录,把远程仓库的内容克隆到该目录,我们可以加上 git_testf_01,那么目录名就自动变了。
在这里插入图片描述
这里我们可以执行 ls 命令,它可以查看当前目录下所有文件
在这里插入图片描述
可以看到,确实是创建了 git_test_01 目录

6.4.5 抓取和拉取

抓取命令形式:

git fetch[ <远程仓库名> [ <分支名>]]

提示:如果不指定远程仓库名和分支名,则抓取对应的分支。

继续使用上面的例子,在 git_test 目录下新增 file04.txt 文件并提交到仓库,然后推送到远程仓库。打开 git_test_01 目录,执行抓取命令
在这里插入图片描述
执行 git-log 可以看到最新的版本库是 origin/master 远程分支,但是本地 master 分支并不是最新版本库,因此需要执行 git merge origin/master 合并分支
在这里插入图片描述
此时本地 master 分支也是最新版本库了

拉取命令形式:

git pull[ <远程仓库名> [ <分支名>]]

提示:如果不指定远程仓库名和分支名,则抓取对应的分支。

抓取和拉取的区别就在于,抓取不会自动合并,而拉取会在抓取后执行合并。我们可以在 git_test 目录下新增 file05.txt 文件并提交到仓库,然后推送到远程仓库。打开 git_test_01 目录,执行拉取命令
在这里插入图片描述
可以看到,拉取成功后本地 master 分支就是最新版本库了。

6.4.6 解决冲突

**本地仓库更改后,在推送到远程仓库前,应该先执行抓取,再执行推送。**假如用户A修改了file01文件并且推送到了远程仓库,用户B也在本地修改了file01文件,此时他想推送到远程仓库就会失败。
在这里插入图片描述
提示说远程仓库有你本地没有的工作,建议你先集成远程仓库的更改。这就是先执行抓取的原因。我们执行抓取后(通常执行拉取,此处抓取是为了),输出日志查看。
在这里插入图片描述
远程更改了count为8,本地更改了count为9,此时执行合并分支就会产生冲突。
在这里插入图片描述
如果觉得 抓取+合并 太麻烦,你也可以直接执行拉取(pull),效果是一样的。
在这里插入图片描述
图中HEAD表示本地,最后面的版本号表示远程。

出现冲突不用怕,解决冲突和前面本地仓库是一样的,就是把 需要提交的内容留下 ,其余删除,然后提交到本地,再推送到远程。这里我们就把这段内容删除,留下count=10,然后提交。
在这里插入图片描述
这样我们就解决了冲突,最后一步就是把解决冲突后的文件推送到远程仓库。
在这里插入图片描述

6.4.7 与远程仓库同步分支(2023-05-26补充)

远程仓库新增一条分支,本地可以通过 fetch 命令同步分支

git fetch

然后就能通过 checkout 命令切换到新的分支上

git checkout 分支名

vscode 中可以在左下角切换分支
在这里插入图片描述

到这里,Git的入门知识就讲完了,希望这篇文章能对入门的伙伴有一点帮助。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sunddy_x/article/details/126822966

智能推荐

gz是什么意思饭圈_吴京问粉头是什么意思 粉头饭圈含义出处介绍-程序员宅基地

文章浏览阅读492次。最近的吴京问粉头是什么意思?粉头梗是什么意思?还有许多网友不知道粉头是什么意思?小编给大家介绍下粉头的含义和出处来源,有兴趣还不知道的网友一起来看看吧! 吴京问粉头是什么意思? 粉头是什么梗 粉头饭圈含义出处介绍 在饭圈里面粉头的意思就是粉丝团的老大和头目的意思,在偶像的发展中也是非常重要非常关键的人物,因为直接的决定了整个粉丝团的组建以及一些重大的事情安排。所以一个偶像的粉丝团..._qmgz是什么污言秽语

C++ primer第六章6.4函数的学习 之函数的重载_c++根据实参推断重载函数-程序员宅基地

文章浏览阅读148次。6.4 函数的重载函数的名字相同但是形参的列表不同,将其称之为重载函数void print(const char *cp);void print(const int *beg,const int * end);void print(const int ia[],size_t size);形如上面所展现的这样,当调用这些函数的时候,编译器会根据传递的实参类型推断出想要的是哪个函数。 重载函数在一定程度上减轻了程序员对于起名字和记名字的负担。 mian函数不可以重载定义承载函数比如数据_c++根据实参推断重载函数

mybatis自动建表oracle,利用mybatis-generator自动生成代码 - 菩提树下的杨过 - 博客园...-程序员宅基地

文章浏览阅读764次。mybatis-generator 有三种用法:命令行、eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上可以通用。下面是从官网上的截图:(不过官网 www.mybatis.org 最近一段时间,好象已经挂了) 一、在pom.xml中添加plugin 1 < plugin > 2 < groupId &..._mybatis-generator oracle selectbyentity

amd 皓龙 服务器 芯片,霄龙PK皓龙!AMD CPU 10年历史对比:一步登天-程序员宅基地

文章浏览阅读246次。凭借全新的Zen架构,AMD处理器今年启动了绝地反击,无论主流的Ryzen还是发烧的Ryzen ThreadRipper都让人惊喜万分,而在服务器、数据中心领域,AMD同样带来了新的EPYC(霄龙),重返竞争,直面Intel Xeon。AMD曾经凭借Opteron(皓龙)在服务器领域拿到过27%的市场份额,但最近几年几乎完全告别了这一市场。如今EPYC归来,表现有何提升呢?专门在Linux系统下测...

IDEA 中自动保存的 database console 控制台内容记录_idea database console-程序员宅基地

文章浏览阅读6.4k次,点赞6次,收藏10次。用过了 SQLyog 以及 Navicat 对字段的自动补齐还是不够好。所以坚持使用 IDEA 自带的 Database 数据库客户端,自带控制台 console。语句补全:字段补全:但需要将 临时的 console 作为一个 sql记事本 的 客户端来用,所以要找到 IDEA 存储它的位置,不至于丢失掉以前的记录。花了点功夫找到它!藏身之处:..._idea database console

linux内存管理工具,Linux内存管理 (26)内存相关工具-程序员宅基地

文章浏览阅读230次。1. vmstat2. memstatmemstat可以通过sudo apt install memstat安装,安装包括两个文件memstat和memstat.conf。其中memstat.conf是memstat配置文件,指定memstat检索目录,里面应该包括主要的bin和lib目录。memstat通过遍历/proc下所有进程,然后解析内存使用情况。通过对比可以发现,memstat不会统计内..._memstat -p

随便推点

三维空间中向量的旋转_三维向量旋转-程序员宅基地

文章浏览阅读9.2k次,点赞9次,收藏41次。三维空间中向量的旋转_三维向量旋转

MATLAB:三维坐标及函数案例实现_matlab建立三维坐标系-程序员宅基地

文章浏览阅读1.4w次,点赞6次,收藏43次。虚拟现实技术:三维立体显示案例实现目录虚拟现实技术:三维立体显示案例实现案例一:matlab 绘制三维图并标注每个点的坐标1.前言2.代码实现案例二:matlab 绘制三维曲面的函数1.mesh函数2.surf函数3.两者调用格式差不多4.比较mesh、surf的区别案例一:matlab 绘制三维图并标注每个点的坐标1.前言基本原理是先绘制三维图,通过plot3,然后通过text函数在每个点标注出坐标,但由于点的数量多,标注会比较密集,不一定看得清楚,可以适当减少标注的点数来提高清晰度。2.代码实_matlab建立三维坐标系

anti-wrinkle_Anti-wrinkle是什么意思-程序员宅基地

文章浏览阅读1.2k次。1. Each week, use this product in conjunction with Water Breath Sleeping Eye Mask and Biochemical Anti-Wrinkle Sleeping Eye Mask two to three times, these two eye masks can be used alternatively.每周配合使..._fewruer neck anti-wrinkle

VMware ESXi下载和安装_vmware esxi 6.0安装包下载教程-程序员宅基地

文章浏览阅读8.4k次。VMware ESXi下载和安装转载地址:VMware ESXI下载及安装转载地址https://blog.51cto.com/10802692/2409826_vmware esxi 6.0安装包下载教程

Spring的IOC原理以及思维导图_spring ioc工作原理图-程序员宅基地

文章浏览阅读1.8k次,点赞7次,收藏14次。什么是控制反转(IOC)?_spring ioc工作原理图

【NLP】华为推出了全球最大的中文语言模型-盘古-程序员宅基地

文章浏览阅读4k次,点赞3次,收藏9次。作者:金雪锋链接:https://www.zhihu.com/question/456443707/answer/1856014437这次HDC大会,华为联合鹏城发布了两个千亿的NLP大模..._华为手机的大语言模型

推荐文章

热门文章

相关标签